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/03/22 21:46:24 UTC

[2/9] airavata git commit: adding replica catalog related API methods

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c5645d3/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
index 97146d3..f8fc506 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
@@ -2075,13 +2075,13 @@ class Iface:
     """
     pass
 
-  def addLocalDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, localDataMovement):
+  def addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
     """
 
     Add a Local data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param DMType
@@ -2100,7 +2100,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - localDataMovement
@@ -2148,13 +2148,13 @@ class Iface:
     """
     pass
 
-  def addSCPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement):
+  def addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
     """
 
     Add a SCP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param priorityOrder
@@ -2169,7 +2169,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - scpDataMovement
@@ -2216,13 +2216,13 @@ class Iface:
     """
     pass
 
-  def addUnicoreDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement):
+  def addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
     """
 
     Add a UNICORE data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which data movement protocol to be added
 
     @param priorityOrder
@@ -2237,7 +2237,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - unicoreDataMovement
@@ -2286,13 +2286,13 @@ class Iface:
     """
     pass
 
-  def addGridFTPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement):
+  def addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
     """
 
     Add a GridFTP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which dataMovement protocol to be added
 
     @param DMType
@@ -2311,7 +2311,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - gridFTPDataMovement
@@ -2456,7 +2456,7 @@ class Iface:
     """
     pass
 
-  def deleteDataMovementInterface(self, authzToken, productId, dataMovementInterfaceId, dataMoveType):
+  def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
     """
     Delete a given data movement interface
 
@@ -2470,7 +2470,7 @@ class Iface:
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMovementInterfaceId
      - dataMoveType
     """
@@ -2917,6 +2917,33 @@ class Iface:
     """
     pass
 
+  def registerDataProduct(self, authzToken, dataProductModel):
+    """
+    API Methods related to data catalog
+
+
+    Parameters:
+     - authzToken
+     - dataProductModel
+    """
+    pass
+
+  def getDataProduct(self, authzToken, dataProductUri):
+    """
+    Parameters:
+     - authzToken
+     - dataProductUri
+    """
+    pass
+
+  def registerReplicaLocation(self, authzToken, replicaLocationModel):
+    """
+    Parameters:
+     - authzToken
+     - replicaLocationModel
+    """
+    pass
+
 
 class Client(Iface):
   def __init__(self, iprot, oprot=None):
@@ -7991,13 +8018,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "updateUnicoreJobSubmissionDetails failed: unknown result")
 
-  def addLocalDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, localDataMovement):
+  def addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
     """
 
     Add a Local data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param DMType
@@ -8016,19 +8043,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - localDataMovement
     """
-    self.send_addLocalDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, localDataMovement)
+    self.send_addLocalDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, localDataMovement)
     return self.recv_addLocalDataMovementDetails()
 
-  def send_addLocalDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, localDataMovement):
+  def send_addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
     self._oprot.writeMessageBegin('addLocalDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addLocalDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.localDataMovement = localDataMovement
@@ -8167,13 +8194,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getLocalDataMovement failed: unknown result")
 
-  def addSCPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement):
+  def addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
     """
 
     Add a SCP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which JobSubmission protocol to be added
 
     @param priorityOrder
@@ -8188,19 +8215,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - scpDataMovement
     """
-    self.send_addSCPDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, scpDataMovement)
+    self.send_addSCPDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement)
     return self.recv_addSCPDataMovementDetails()
 
-  def send_addSCPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, scpDataMovement):
+  def send_addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
     self._oprot.writeMessageBegin('addSCPDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addSCPDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.scpDataMovement = scpDataMovement
@@ -8338,13 +8365,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getSCPDataMovement failed: unknown result")
 
-  def addUnicoreDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement):
+  def addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
     """
 
     Add a UNICORE data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which data movement protocol to be added
 
     @param priorityOrder
@@ -8359,19 +8386,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - unicoreDataMovement
     """
-    self.send_addUnicoreDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement)
+    self.send_addUnicoreDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement)
     return self.recv_addUnicoreDataMovementDetails()
 
-  def send_addUnicoreDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, unicoreDataMovement):
+  def send_addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
     self._oprot.writeMessageBegin('addUnicoreDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addUnicoreDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.unicoreDataMovement = unicoreDataMovement
@@ -8511,13 +8538,13 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getUnicoreDataMovement failed: unknown result")
 
-  def addGridFTPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement):
+  def addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
     """
 
     Add a GridFTP data movement details to a compute resource
      App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
 
-    @param productId
+    @param productUri
       The identifier of the compute resource to which dataMovement protocol to be added
 
     @param DMType
@@ -8536,19 +8563,19 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMoveType
      - priorityOrder
      - gridFTPDataMovement
     """
-    self.send_addGridFTPDataMovementDetails(authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement)
+    self.send_addGridFTPDataMovementDetails(authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement)
     return self.recv_addGridFTPDataMovementDetails()
 
-  def send_addGridFTPDataMovementDetails(self, authzToken, productId, dataMoveType, priorityOrder, gridFTPDataMovement):
+  def send_addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
     self._oprot.writeMessageBegin('addGridFTPDataMovementDetails', TMessageType.CALL, self._seqid)
     args = addGridFTPDataMovementDetails_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMoveType = dataMoveType
     args.priorityOrder = priorityOrder
     args.gridFTPDataMovement = gridFTPDataMovement
@@ -8952,7 +8979,7 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteJobSubmissionInterface failed: unknown result")
 
-  def deleteDataMovementInterface(self, authzToken, productId, dataMovementInterfaceId, dataMoveType):
+  def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
     """
     Delete a given data movement interface
 
@@ -8966,18 +8993,18 @@ class Client(Iface):
 
     Parameters:
      - authzToken
-     - productId
+     - productUri
      - dataMovementInterfaceId
      - dataMoveType
     """
-    self.send_deleteDataMovementInterface(authzToken, productId, dataMovementInterfaceId, dataMoveType)
+    self.send_deleteDataMovementInterface(authzToken, productUri, dataMovementInterfaceId, dataMoveType)
     return self.recv_deleteDataMovementInterface()
 
-  def send_deleteDataMovementInterface(self, authzToken, productId, dataMovementInterfaceId, dataMoveType):
+  def send_deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
     self._oprot.writeMessageBegin('deleteDataMovementInterface', TMessageType.CALL, self._seqid)
     args = deleteDataMovementInterface_args()
     args.authzToken = authzToken
-    args.productId = productId
+    args.productUri = productUri
     args.dataMovementInterfaceId = dataMovementInterfaceId
     args.dataMoveType = dataMoveType
     args.write(self._oprot)
@@ -10351,6 +10378,132 @@ class Client(Iface):
       raise result.ae
     raise TApplicationException(TApplicationException.MISSING_RESULT, "isWorkflowExistWithName failed: unknown result")
 
+  def registerDataProduct(self, authzToken, dataProductModel):
+    """
+    API Methods related to data catalog
+
+
+    Parameters:
+     - authzToken
+     - dataProductModel
+    """
+    self.send_registerDataProduct(authzToken, dataProductModel)
+    return self.recv_registerDataProduct()
+
+  def send_registerDataProduct(self, authzToken, dataProductModel):
+    self._oprot.writeMessageBegin('registerDataProduct', TMessageType.CALL, self._seqid)
+    args = registerDataProduct_args()
+    args.authzToken = authzToken
+    args.dataProductModel = dataProductModel
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_registerDataProduct(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = registerDataProduct_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "registerDataProduct failed: unknown result")
+
+  def getDataProduct(self, authzToken, dataProductUri):
+    """
+    Parameters:
+     - authzToken
+     - dataProductUri
+    """
+    self.send_getDataProduct(authzToken, dataProductUri)
+    return self.recv_getDataProduct()
+
+  def send_getDataProduct(self, authzToken, dataProductUri):
+    self._oprot.writeMessageBegin('getDataProduct', TMessageType.CALL, self._seqid)
+    args = getDataProduct_args()
+    args.authzToken = authzToken
+    args.dataProductUri = dataProductUri
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getDataProduct(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getDataProduct_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getDataProduct failed: unknown result")
+
+  def registerReplicaLocation(self, authzToken, replicaLocationModel):
+    """
+    Parameters:
+     - authzToken
+     - replicaLocationModel
+    """
+    self.send_registerReplicaLocation(authzToken, replicaLocationModel)
+    return self.recv_registerReplicaLocation()
+
+  def send_registerReplicaLocation(self, authzToken, replicaLocationModel):
+    self._oprot.writeMessageBegin('registerReplicaLocation', TMessageType.CALL, self._seqid)
+    args = registerReplicaLocation_args()
+    args.authzToken = authzToken
+    args.replicaLocationModel = replicaLocationModel
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_registerReplicaLocation(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = registerReplicaLocation_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "registerReplicaLocation failed: unknown result")
+
 
 class Processor(Iface, TProcessor):
   def __init__(self, handler):
@@ -10490,6 +10643,9 @@ class Processor(Iface, TProcessor):
     self._processMap["updateWorkflow"] = Processor.process_updateWorkflow
     self._processMap["getWorkflowTemplateId"] = Processor.process_getWorkflowTemplateId
     self._processMap["isWorkflowExistWithName"] = Processor.process_isWorkflowExistWithName
+    self._processMap["registerDataProduct"] = Processor.process_registerDataProduct
+    self._processMap["getDataProduct"] = Processor.process_getDataProduct
+    self._processMap["registerReplicaLocation"] = Processor.process_registerReplicaLocation
 
   def process(self, iprot, oprot):
     (name, type, seqid) = iprot.readMessageBegin()
@@ -13286,7 +13442,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addLocalDataMovementDetails_result()
     try:
-      result.success = self._handler.addLocalDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.localDataMovement)
+      result.success = self._handler.addLocalDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.localDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13379,7 +13535,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addSCPDataMovementDetails_result()
     try:
-      result.success = self._handler.addSCPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.scpDataMovement)
+      result.success = self._handler.addSCPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.scpDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13472,7 +13628,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addUnicoreDataMovementDetails_result()
     try:
-      result.success = self._handler.addUnicoreDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement)
+      result.success = self._handler.addUnicoreDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.unicoreDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13565,7 +13721,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = addGridFTPDataMovementDetails_result()
     try:
-      result.success = self._handler.addGridFTPDataMovementDetails(args.authzToken, args.productId, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement)
+      result.success = self._handler.addGridFTPDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.gridFTPDataMovement)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -13813,7 +13969,7 @@ class Processor(Iface, TProcessor):
     iprot.readMessageEnd()
     result = deleteDataMovementInterface_result()
     try:
-      result.success = self._handler.deleteDataMovementInterface(args.authzToken, args.productId, args.dataMovementInterfaceId, args.dataMoveType)
+      result.success = self._handler.deleteDataMovementInterface(args.authzToken, args.productUri, args.dataMovementInterfaceId, args.dataMoveType)
       msg_type = TMessageType.REPLY
     except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
       raise
@@ -14675,6 +14831,99 @@ class Processor(Iface, TProcessor):
     oprot.writeMessageEnd()
     oprot.trans.flush()
 
+  def process_registerDataProduct(self, seqid, iprot, oprot):
+    args = registerDataProduct_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = registerDataProduct_result()
+    try:
+      result.success = self._handler.registerDataProduct(args.authzToken, args.dataProductModel)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("registerDataProduct", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getDataProduct(self, seqid, iprot, oprot):
+    args = getDataProduct_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getDataProduct_result()
+    try:
+      result.success = self._handler.getDataProduct(args.authzToken, args.dataProductUri)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("getDataProduct", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_registerReplicaLocation(self, seqid, iprot, oprot):
+    args = registerReplicaLocation_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = registerReplicaLocation_result()
+    try:
+      result.success = self._handler.registerReplicaLocation(args.authzToken, args.replicaLocationModel)
+      msg_type = TMessageType.REPLY
+    except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+      raise
+    except apache.airavata.api.error.ttypes.InvalidRequestException as ire:
+      msg_type = TMessageType.REPLY
+      result.ire = ire
+    except apache.airavata.api.error.ttypes.AiravataClientException as ace:
+      msg_type = TMessageType.REPLY
+      result.ace = ace
+    except apache.airavata.api.error.ttypes.AiravataSystemException as ase:
+      msg_type = TMessageType.REPLY
+      result.ase = ase
+    except apache.airavata.api.error.ttypes.AuthorizationException as ae:
+      msg_type = TMessageType.REPLY
+      result.ae = ae
+    except Exception as ex:
+      msg_type = TMessageType.EXCEPTION
+      logging.exception(ex)
+      result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+    oprot.writeMessageBegin("registerReplicaLocation", msg_type, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
 
 # HELPER FUNCTIONS AND STRUCTURES
 
@@ -22290,8 +22539,394 @@ class updateExperiment_args:
           iprot.skip(ftype)
       elif fid == 3:
         if ftype == TType.STRUCT:
-          self.experiment = apache.airavata.model.experiment.ttypes.ExperimentModel()
-          self.experiment.read(iprot)
+          self.experiment = apache.airavata.model.experiment.ttypes.ExperimentModel()
+          self.experiment.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('updateExperiment_args')
+    if self.authzToken is not None:
+      oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+      self.authzToken.write(oprot)
+      oprot.writeFieldEnd()
+    if self.airavataExperimentId is not None:
+      oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+      oprot.writeString(self.airavataExperimentId)
+      oprot.writeFieldEnd()
+    if self.experiment is not None:
+      oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
+      self.experiment.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.authzToken is None:
+      raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
+    if self.airavataExperimentId is None:
+      raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
+    if self.experiment is None:
+      raise TProtocol.TProtocolException(message='Required field experiment is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.authzToken)
+    value = (value * 31) ^ hash(self.airavataExperimentId)
+    value = (value * 31) ^ hash(self.experiment)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class updateExperiment_result:
+  """
+  Attributes:
+   - ire
+   - enf
+   - ace
+   - ase
+   - ae
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
+  )
+
+  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.ire = ire
+    self.enf = enf
+    self.ace = ace
+    self.ase = ase
+    self.ae = ae
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
+          self.enf.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('updateExperiment_result')
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.enf is not None:
+      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
+      self.enf.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.enf)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
+    value = (value * 31) ^ hash(self.ae)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class updateExperimentConfiguration_args:
+  """
+  Attributes:
+   - authzToken
+   - airavataExperimentId
+   - userConfiguration
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
+    (3, TType.STRUCT, 'userConfiguration', (apache.airavata.model.experiment.ttypes.UserConfigurationDataModel, apache.airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ), # 3
+  )
+
+  def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,):
+    self.authzToken = authzToken
+    self.airavataExperimentId = airavataExperimentId
+    self.userConfiguration = userConfiguration
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRUCT:
+          self.authzToken = apache.airavata.model.security.ttypes.AuthzToken()
+          self.authzToken.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.airavataExperimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.userConfiguration = apache.airavata.model.experiment.ttypes.UserConfigurationDataModel()
+          self.userConfiguration.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('updateExperimentConfiguration_args')
+    if self.authzToken is not None:
+      oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+      self.authzToken.write(oprot)
+      oprot.writeFieldEnd()
+    if self.airavataExperimentId is not None:
+      oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+      oprot.writeString(self.airavataExperimentId)
+      oprot.writeFieldEnd()
+    if self.userConfiguration is not None:
+      oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3)
+      self.userConfiguration.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.authzToken is None:
+      raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
+    if self.airavataExperimentId is None:
+      raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
+    if self.userConfiguration is None:
+      raise TProtocol.TProtocolException(message='Required field userConfiguration is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.authzToken)
+    value = (value * 31) ^ hash(self.airavataExperimentId)
+    value = (value * 31) ^ hash(self.userConfiguration)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class updateExperimentConfiguration_result:
+  """
+  Attributes:
+   - ae
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
+  )
+
+  def __init__(self, ae=None,):
+    self.ae = ae
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRUCT:
+          self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
+          self.ae.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('updateExperimentConfiguration_result')
+    if self.ae is not None:
+      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+      self.ae.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.ae)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class updateResourceScheduleing_args:
+  """
+  Attributes:
+   - authzToken
+   - airavataExperimentId
+   - resourceScheduling
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
+    (3, TType.STRUCT, 'resourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 3
+  )
+
+  def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,):
+    self.authzToken = authzToken
+    self.airavataExperimentId = airavataExperimentId
+    self.resourceScheduling = resourceScheduling
+
+  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:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRUCT:
+          self.authzToken = apache.airavata.model.security.ttypes.AuthzToken()
+          self.authzToken.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.airavataExperimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.resourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.resourceScheduling.read(iprot)
         else:
           iprot.skip(ftype)
       else:
@@ -22303,7 +22938,7 @@ class updateExperiment_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('updateExperiment_args')
+    oprot.writeStructBegin('updateResourceScheduleing_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22312,9 +22947,9 @@ class updateExperiment_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.experiment is not None:
-      oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
-      self.experiment.write(oprot)
+    if self.resourceScheduling is not None:
+      oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3)
+      self.resourceScheduling.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -22324,8 +22959,8 @@ class updateExperiment_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.experiment is None:
-      raise TProtocol.TProtocolException(message='Required field experiment is unset!')
+    if self.resourceScheduling is None:
+      raise TProtocol.TProtocolException(message='Required field resourceScheduling is unset!')
     return
 
 
@@ -22333,7 +22968,7 @@ class updateExperiment_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.experiment)
+    value = (value * 31) ^ hash(self.resourceScheduling)
     return value
 
   def __repr__(self):
@@ -22347,30 +22982,18 @@ class updateExperiment_args:
   def __ne__(self, other):
     return not (self == other)
 
-class updateExperiment_result:
+class updateResourceScheduleing_result:
   """
   Attributes:
-   - ire
-   - enf
-   - ace
-   - ase
    - ae
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
-    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
-    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
-    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
+    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
   )
 
-  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
-    self.ire = ire
-    self.enf = enf
-    self.ace = ace
-    self.ase = ase
+  def __init__(self, ae=None,):
     self.ae = ae
 
   def read(self, iprot):
@@ -22384,30 +23007,6 @@ class updateExperiment_result:
         break
       if fid == 1:
         if ftype == TType.STRUCT:
-          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
-          self.ire.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRUCT:
-          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
-          self.enf.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRUCT:
-          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
-          self.ace.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRUCT:
-          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
-          self.ase.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRUCT:
           self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
           self.ae.read(iprot)
         else:
@@ -22421,25 +23020,9 @@ class updateExperiment_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('updateExperiment_result')
-    if self.ire is not None:
-      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
-      self.ire.write(oprot)
-      oprot.writeFieldEnd()
-    if self.enf is not None:
-      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
-      self.enf.write(oprot)
-      oprot.writeFieldEnd()
-    if self.ace is not None:
-      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
-      self.ace.write(oprot)
-      oprot.writeFieldEnd()
-    if self.ase is not None:
-      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
-      self.ase.write(oprot)
-      oprot.writeFieldEnd()
+    oprot.writeStructBegin('updateResourceScheduleing_result')
     if self.ae is not None:
-      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
       self.ae.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -22451,10 +23034,6 @@ class updateExperiment_result:
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.ire)
-    value = (value * 31) ^ hash(self.enf)
-    value = (value * 31) ^ hash(self.ace)
-    value = (value * 31) ^ hash(self.ase)
     value = (value * 31) ^ hash(self.ae)
     return value
 
@@ -22469,25 +23048,22 @@ class updateExperiment_result:
   def __ne__(self, other):
     return not (self == other)
 
-class updateExperimentConfiguration_args:
+class validateExperiment_args:
   """
   Attributes:
    - authzToken
    - airavataExperimentId
-   - userConfiguration
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
     (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
-    (3, TType.STRUCT, 'userConfiguration', (apache.airavata.model.experiment.ttypes.UserConfigurationDataModel, apache.airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,):
+  def __init__(self, authzToken=None, airavataExperimentId=None,):
     self.authzToken = authzToken
     self.airavataExperimentId = airavataExperimentId
-    self.userConfiguration = userConfiguration
 
   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:
@@ -22509,12 +23085,6 @@ class updateExperimentConfiguration_args:
           self.airavataExperimentId = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRUCT:
-          self.userConfiguration = apache.airavata.model.experiment.ttypes.UserConfigurationDataModel()
-          self.userConfiguration.read(iprot)
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -22524,7 +23094,7 @@ class updateExperimentConfiguration_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('updateExperimentConfiguration_args')
+    oprot.writeStructBegin('validateExperiment_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22533,10 +23103,6 @@ class updateExperimentConfiguration_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.userConfiguration is not None:
-      oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3)
-      self.userConfiguration.write(oprot)
-      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -22545,8 +23111,6 @@ class updateExperimentConfiguration_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.userConfiguration is None:
-      raise TProtocol.TProtocolException(message='Required field userConfiguration is unset!')
     return
 
 
@@ -22554,7 +23118,6 @@ class updateExperimentConfiguration_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.userConfiguration)
     return value
 
   def __repr__(self):
@@ -22568,18 +23131,32 @@ class updateExperimentConfiguration_args:
   def __ne__(self, other):
     return not (self == other)
 
-class updateExperimentConfiguration_result:
+class validateExperiment_result:
   """
   Attributes:
+   - success
+   - ire
+   - enf
+   - ace
+   - ase
    - ae
   """
 
   thrift_spec = (
-    None, # 0
-    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
+    (0, TType.BOOL, 'success', None, None, ), # 0
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
   )
 
-  def __init__(self, ae=None,):
+  def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.success = success
+    self.ire = ire
+    self.enf = enf
+    self.ace = ace
+    self.ase = ase
     self.ae = ae
 
   def read(self, iprot):
@@ -22591,7 +23168,36 @@ class updateExperimentConfiguration_result:
       (fname, ftype, fid) = iprot.readFieldBegin()
       if ftype == TType.STOP:
         break
-      if fid == 1:
+      if fid == 0:
+        if ftype == TType.BOOL:
+          self.success = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
+          self.enf.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
         if ftype == TType.STRUCT:
           self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
           self.ae.read(iprot)
@@ -22606,9 +23212,29 @@ class updateExperimentConfiguration_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('updateExperimentConfiguration_result')
+    oprot.writeStructBegin('validateExperiment_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.BOOL, 0)
+      oprot.writeBool(self.success)
+      oprot.writeFieldEnd()
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.enf is not None:
+      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
+      self.enf.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
     if self.ae is not None:
-      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
       self.ae.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -22620,6 +23246,11 @@ class updateExperimentConfiguration_result:
 
   def __hash__(self):
     value = 17
+    value = (value * 31) ^ hash(self.success)
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.enf)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
     value = (value * 31) ^ hash(self.ae)
     return value
 
@@ -22634,25 +23265,25 @@ class updateExperimentConfiguration_result:
   def __ne__(self, other):
     return not (self == other)
 
-class updateResourceScheduleing_args:
+class launchExperiment_args:
   """
   Attributes:
    - authzToken
    - airavataExperimentId
-   - resourceScheduling
+   - gatewayId
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
     (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
-    (3, TType.STRUCT, 'resourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 3
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,):
+  def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
     self.authzToken = authzToken
     self.airavataExperimentId = airavataExperimentId
-    self.resourceScheduling = resourceScheduling
+    self.gatewayId = gatewayId
 
   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:
@@ -22675,9 +23306,8 @@ class updateResourceScheduleing_args:
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.STRUCT:
-          self.resourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
-          self.resourceScheduling.read(iprot)
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -22689,7 +23319,7 @@ class updateResourceScheduleing_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('updateResourceScheduleing_args')
+    oprot.writeStructBegin('launchExperiment_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22698,9 +23328,9 @@ class updateResourceScheduleing_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.resourceScheduling is not None:
-      oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3)
-      self.resourceScheduling.write(oprot)
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -22710,8 +23340,8 @@ class updateResourceScheduleing_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.resourceScheduling is None:
-      raise TProtocol.TProtocolException(message='Required field resourceScheduling is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
     return
 
 
@@ -22719,7 +23349,7 @@ class updateResourceScheduleing_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.resourceScheduling)
+    value = (value * 31) ^ hash(self.gatewayId)
     return value
 
   def __repr__(self):
@@ -22733,18 +23363,30 @@ class updateResourceScheduleing_args:
   def __ne__(self, other):
     return not (self == other)
 
-class updateResourceScheduleing_result:
+class launchExperiment_result:
   """
   Attributes:
+   - ire
+   - enf
+   - ace
+   - ase
    - ae
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1
+    (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
   )
 
-  def __init__(self, ae=None,):
+  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.ire = ire
+    self.enf = enf
+    self.ace = ace
+    self.ase = ase
     self.ae = ae
 
   def read(self, iprot):
@@ -22758,6 +23400,30 @@ class updateResourceScheduleing_result:
         break
       if fid == 1:
         if ftype == TType.STRUCT:
+          self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
+          self.ire.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException()
+          self.enf.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.ace = apache.airavata.api.error.ttypes.AiravataClientException()
+          self.ace.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.ase = apache.airavata.api.error.ttypes.AiravataSystemException()
+          self.ase.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
           self.ae = apache.airavata.api.error.ttypes.AuthorizationException()
           self.ae.read(iprot)
         else:
@@ -22771,9 +23437,25 @@ class updateResourceScheduleing_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('updateResourceScheduleing_result')
+    oprot.writeStructBegin('launchExperiment_result')
+    if self.ire is not None:
+      oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+      self.ire.write(oprot)
+      oprot.writeFieldEnd()
+    if self.enf is not None:
+      oprot.writeFieldBegin('enf', TType.STRUCT, 2)
+      self.enf.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ace is not None:
+      oprot.writeFieldBegin('ace', TType.STRUCT, 3)
+      self.ace.write(oprot)
+      oprot.writeFieldEnd()
+    if self.ase is not None:
+      oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+      self.ase.write(oprot)
+      oprot.writeFieldEnd()
     if self.ae is not None:
-      oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+      oprot.writeFieldBegin('ae', TType.STRUCT, 5)
       self.ae.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -22785,6 +23467,10 @@ class updateResourceScheduleing_result:
 
   def __hash__(self):
     value = 17
+    value = (value * 31) ^ hash(self.ire)
+    value = (value * 31) ^ hash(self.enf)
+    value = (value * 31) ^ hash(self.ace)
+    value = (value * 31) ^ hash(self.ase)
     value = (value * 31) ^ hash(self.ae)
     return value
 
@@ -22799,7 +23485,7 @@ class updateResourceScheduleing_result:
   def __ne__(self, other):
     return not (self == other)
 
-class validateExperiment_args:
+class getExperimentStatus_args:
   """
   Attributes:
    - authzToken
@@ -22845,7 +23531,7 @@ class validateExperiment_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('validateExperiment_args')
+    oprot.writeStructBegin('getExperimentStatus_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -22882,7 +23568,7 @@ class validateExperiment_args:
   def __ne__(self, other):
     return not (self == other)
 
-class validateExperiment_result:
+class getExperimentStatus_result:
   """
   Attributes:
    - success
@@ -22894,7 +23580,7 @@ class validateExperiment_result:
   """
 
   thrift_spec = (
-    (0, TType.BOOL, 'success', None, None, ), # 0
+    (0, TType.STRUCT, 'success', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -22920,8 +23606,9 @@ class validateExperiment_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.BOOL:
-          self.success = iprot.readBool()
+        if ftype == TType.STRUCT:
+          self.success = apache.airavata.model.status.ttypes.ExperimentStatus()
+          self.success.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 1:
@@ -22963,10 +23650,10 @@ class validateExperiment_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('validateExperiment_result')
+    oprot.writeStructBegin('getExperimentStatus_result')
     if self.success is not None:
-      oprot.writeFieldBegin('success', TType.BOOL, 0)
-      oprot.writeBool(self.success)
+      oprot.writeFieldBegin('success', TType.STRUCT, 0)
+      self.success.write(oprot)
       oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -23016,25 +23703,22 @@ class validateExperiment_result:
   def __ne__(self, other):
     return not (self == other)
 
-class launchExperiment_args:
+class getExperimentOutputs_args:
   """
   Attributes:
    - authzToken
    - airavataExperimentId
-   - gatewayId
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
     (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
-    (3, TType.STRING, 'gatewayId', None, None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
+  def __init__(self, authzToken=None, airavataExperimentId=None,):
     self.authzToken = authzToken
     self.airavataExperimentId = airavataExperimentId
-    self.gatewayId = gatewayId
 
   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:
@@ -23056,11 +23740,6 @@ class launchExperiment_args:
           self.airavataExperimentId = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.gatewayId = iprot.readString()
-        else:
-          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -23070,7 +23749,7 @@ class launchExperiment_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('launchExperiment_args')
+    oprot.writeStructBegin('getExperimentOutputs_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23079,10 +23758,6 @@ class launchExperiment_args:
       oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
       oprot.writeString(self.airavataExperimentId)
       oprot.writeFieldEnd()
-    if self.gatewayId is not None:
-      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
-      oprot.writeString(self.gatewayId)
-      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -23091,8 +23766,6 @@ class launchExperiment_args:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
     if self.airavataExperimentId is None:
       raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
-    if self.gatewayId is None:
-      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
     return
 
 
@@ -23100,7 +23773,6 @@ class launchExperiment_args:
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
     value = (value * 31) ^ hash(self.airavataExperimentId)
-    value = (value * 31) ^ hash(self.gatewayId)
     return value
 
   def __repr__(self):
@@ -23114,9 +23786,10 @@ class launchExperiment_args:
   def __ne__(self, other):
     return not (self == other)
 
-class launchExperiment_result:
+class getExperimentOutputs_result:
   """
   Attributes:
+   - success
    - ire
    - enf
    - ace
@@ -23125,7 +23798,7 @@ class launchExperiment_result:
   """
 
   thrift_spec = (
-    None, # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23133,7 +23806,8 @@ class launchExperiment_result:
     (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5
   )
 
-  def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+  def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    self.success = success
     self.ire = ire
     self.enf = enf
     self.ace = ace
@@ -23149,7 +23823,18 @@ class launchExperiment_result:
       (fname, ftype, fid) = iprot.readFieldBegin()
       if ftype == TType.STOP:
         break
-      if fid == 1:
+      if fid == 0:
+        if ftype == TType.LIST:
+          self.success = []
+          (_etype114, _size111) = iprot.readListBegin()
+          for _i115 in xrange(_size111):
+            _elem116 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem116.read(iprot)
+            self.success.append(_elem116)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
         if ftype == TType.STRUCT:
           self.ire = apache.airavata.api.error.ttypes.InvalidRequestException()
           self.ire.read(iprot)
@@ -23188,7 +23873,14 @@ class launchExperiment_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('launchExperiment_result')
+    oprot.writeStructBegin('getExperimentOutputs_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.LIST, 0)
+      oprot.writeListBegin(TType.STRUCT, len(self.success))
+      for iter117 in self.success:
+        iter117.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
       self.ire.write(oprot)
@@ -23218,6 +23910,7 @@ class launchExperiment_result:
 
   def __hash__(self):
     value = 17
+    value = (value * 31) ^ hash(self.success)
     value = (value * 31) ^ hash(self.ire)
     value = (value * 31) ^ hash(self.enf)
     value = (value * 31) ^ hash(self.ace)
@@ -23236,7 +23929,7 @@ class launchExperiment_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentStatus_args:
+class getIntermediateOutputs_args:
   """
   Attributes:
    - authzToken
@@ -23282,7 +23975,7 @@ class getExperimentStatus_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getExperimentStatus_args')
+    oprot.writeStructBegin('getIntermediateOutputs_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23319,7 +24012,7 @@ class getExperimentStatus_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentStatus_result:
+class getIntermediateOutputs_result:
   """
   Attributes:
    - success
@@ -23331,7 +24024,7 @@ class getExperimentStatus_result:
   """
 
   thrift_spec = (
-    (0, TType.STRUCT, 'success', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23357,9 +24050,14 @@ class getExperimentStatus_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.STRUCT:
-          self.success = apache.airavata.model.status.ttypes.ExperimentStatus()
-          self.success.read(iprot)
+        if ftype == TType.LIST:
+          self.success = []
+          (_etype121, _size118) = iprot.readListBegin()
+          for _i122 in xrange(_size118):
+            _elem123 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem123.read(iprot)
+            self.success.append(_elem123)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 1:
@@ -23401,10 +24099,13 @@ class getExperimentStatus_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getExperimentStatus_result')
+    oprot.writeStructBegin('getIntermediateOutputs_result')
     if self.success is not None:
-      oprot.writeFieldBegin('success', TType.STRUCT, 0)
-      self.success.write(oprot)
+      oprot.writeFieldBegin('success', TType.LIST, 0)
+      oprot.writeListBegin(TType.STRUCT, len(self.success))
+      for iter124 in self.success:
+        iter124.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -23454,7 +24155,7 @@ class getExperimentStatus_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentOutputs_args:
+class getJobStatuses_args:
   """
   Attributes:
    - authzToken
@@ -23500,7 +24201,7 @@ class getExperimentOutputs_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getExperimentOutputs_args')
+    oprot.writeStructBegin('getJobStatuses_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23537,7 +24238,7 @@ class getExperimentOutputs_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getExperimentOutputs_result:
+class getJobStatuses_result:
   """
   Attributes:
    - success
@@ -23549,7 +24250,7 @@ class getExperimentOutputs_result:
   """
 
   thrift_spec = (
-    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
+    (0, TType.MAP, 'success', (TType.STRING,None,TType.STRUCT,(apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23575,14 +24276,15 @@ class getExperimentOutputs_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.LIST:
-          self.success = []
-          (_etype114, _size111) = iprot.readListBegin()
-          for _i115 in xrange(_size111):
-            _elem116 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
-            _elem116.read(iprot)
-            self.success.append(_elem116)
-          iprot.readListEnd()
+        if ftype == TType.MAP:
+          self.success = {}
+          (_ktype126, _vtype127, _size125 ) = iprot.readMapBegin()
+          for _i129 in xrange(_size125):
+            _key130 = iprot.readString()
+            _val131 = apache.airavata.model.status.ttypes.JobStatus()
+            _val131.read(iprot)
+            self.success[_key130] = _val131
+          iprot.readMapEnd()
         else:
           iprot.skip(ftype)
       elif fid == 1:
@@ -23624,13 +24326,14 @@ class getExperimentOutputs_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getExperimentOutputs_result')
+    oprot.writeStructBegin('getJobStatuses_result')
     if self.success is not None:
-      oprot.writeFieldBegin('success', TType.LIST, 0)
-      oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter117 in self.success:
-        iter117.write(oprot)
-      oprot.writeListEnd()
+      oprot.writeFieldBegin('success', TType.MAP, 0)
+      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
+      for kiter132,viter133 in self.success.items():
+        oprot.writeString(kiter132)
+        viter133.write(oprot)
+      oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
       oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -23680,7 +24383,7 @@ class getExperimentOutputs_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getIntermediateOutputs_args:
+class getJobDetails_args:
   """
   Attributes:
    - authzToken
@@ -23726,7 +24429,7 @@ class getIntermediateOutputs_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getIntermediateOutputs_args')
+    oprot.writeStructBegin('getJobDetails_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
@@ -23763,7 +24466,7 @@ class getIntermediateOutputs_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getIntermediateOutputs_result:
+class getJobDetails_result:
   """
   Attributes:
    - success
@@ -23775,7 +24478,7 @@ class getIntermediateOutputs_result:
   """
 
   thrift_spec = (
-    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 0
+    (0, TType.LIST, 'success', (TType.STRUCT,(apache.airavata.model.job.ttypes.JobModel, apache.airavata.model.job.ttypes.JobModel.thrift_spec)), None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -23803,11 +24506,11 @@ class getIntermediateOutputs_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype121, _size118) = iprot.readListBegin()
-          for _i122 in xrange(_size118):
-            _elem123 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
-            _elem123.read(iprot)
-            self.success.append(_elem123)
+          (_etype137, _size134) = iprot.readListBegin()
+          for _i138 in xrange(_size134):
+            _elem139 = apache.airavata.model.job.ttypes.JobModel()
+            _elem139.read(iprot)
+            self.success.append(_elem139)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -23850,12 +24553,12 @@ class getIntermediateOutputs_result:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getIntermediateOutputs_result')
+    oprot.writeStructBegin('getJobDetails_result')
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter124 in self.success:
-        iter124.write(oprot)
+      for iter140 in self.success:
+        iter140.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.ire is not None:
@@ -23906,22 +24609,25 @@ class getIntermediateOutputs_result:
   def __ne__(self, other):
     return not (self == other)
 
-class getJobStatuses_args:
+class cloneExperiment_args:
   """
   Attributes:
    - authzToken
-   - airavataExperimentId
+   - existingExperimentID
+   - newExperimentName
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1
-    (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2
+    (2, TType.STRING, 'existingExperimentID', None, None, ), # 2
+    (3, TType.STRING, 'newExperimentName', None, None, ), # 3
   )
 
-  def __init__(self, authzToken=None, airavataExperimentId=None,):
+  def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None,):
     self.authzToken = authzToken
-    self.airavataExperimentId = airavataExperimentId
+    self.existingExperimentID = existingExperimentID
+    self.newExperimentName = newExperimentName
 
   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:
@@ -23940,7 +24646,12 @@ class getJobStatuses_args:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRING:
-          self.airavataExperimentId = iprot.readString()
+          self.existingExperimentID = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.newExperimentName = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -23952,14 +24663,18 @@ class getJobStatuses_args:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('getJobStatuses_args')
+    oprot.writeStructBegin('cloneExperiment_args')
     if self.authzToken is not None:
       oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
       self.authzToken.write(oprot)
       oprot.writeFieldEnd()
-    if self.airavataExperimentId is not None:
-      oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
-      oprot.writeString(self.airavataExperimentId)
+    if self.existingExperimentID is not None:
+      oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2)
+      oprot.writeString(self.existingExperimentID)
+      oprot.writeFieldEnd()
+    if self.newExperimentName is not None:
+      oprot.writeFieldBegin('newExperimentName', TType.STRING, 3)
+      oprot.writeString(self.newExperimentName)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -23967,15 +24682,14 @@ class getJobStatuses_args:
   def validate(self):
     if self.authzToken is None:
       raise TProtocol.TProtocolException(message='Required field authzToken is unset!')
-    if self.airavataExperimentId is None:
-      raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!')
     return
 
 
   def __hash__(self):
     value = 17
     value = (value * 31) ^ hash(self.authzToken)
-    value = (value * 31) ^ hash(self.airavataExperimentId)
+    value = (value * 31) ^ hash(self.existingExperimentID)
+    value = (value * 31) ^ hash(self.newExperimentName)
     return value
 
   def __repr__(self):
@@ -23989,7 +24703,7 @@ class getJobStatuses_args:
   def __ne__(self, other):
     return not (self == other)
 
-class getJobStatuses_result:
+class cloneExperiment_result:
   """
   Attributes:
    - success
@@ -24001,7 +24715,7 @@ class getJobStatuses_result:
   """
 
   thrift_spec = (
-    (0, TType.MAP, 'success', (TType.STRING,None,TType.STRUCT,(apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec)), None, ), # 0
+    (0, TType.STRING, 'success', None, None, ), # 0
     (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1
     (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2
     (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3
@@ -24027,15 +24741,8 @@ class getJobStatuses_result:
       if ftype == TType.STOP:
         break
       if fid == 0:
-        if ftype == TType.MAP:
-          self.success = {}
-          (_ktype126, _vtype127, _size125 ) = iprot

<TRUNCATED>