airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From machris...@apache.org
Subject [airavata-django-portal] 01/04: AIRAVATA-2794 Generate Thrift stubs: getGatewayGroups
Date Mon, 04 Jun 2018 18:15:03 GMT
This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit 1f74c9e346d7c6bc62952437be1e43e8dfca2e1a
Author: Marcus Christie <machrist@iu.edu>
AuthorDate: Mon May 21 16:55:37 2018 -0400

    AIRAVATA-2794 Generate Thrift stubs: getGatewayGroups
---
 airavata/api/Airavata-remote                       |   21 +
 airavata/api/Airavata.py                           | 9815 +++++++++++---------
 airavata/api/ttypes.py                             |    1 +
 .../model/appcatalog/gatewaygroups/__init__.py     |    1 +
 .../model/appcatalog/gatewaygroups/constants.py    |   12 +
 airavata/model/appcatalog/gatewaygroups/ttypes.py  |  117 +
 airavata/model/ttypes.py                           |    1 +
 7 files changed, 5500 insertions(+), 4468 deletions(-)

diff --git a/airavata/api/Airavata-remote b/airavata/api/Airavata-remote
index 7b09b27..30ae6c0 100755
--- a/airavata/api/Airavata-remote
+++ b/airavata/api/Airavata-remote
@@ -191,7 +191,9 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
     print('  DataProductModel getParentDataProduct(AuthzToken authzToken, string productUri)')
     print('   getChildDataProducts(AuthzToken authzToken, string productUri)')
     print('  bool shareResourceWithUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+    print('  bool shareResourceWithGroups(AuthzToken authzToken, string resourceId, ResourceType resourceType,  groupPermissionList)')
     print('  bool revokeSharingOfResourceFromUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+    print('  bool revokeSharingOfResourceFromGroups(AuthzToken authzToken, string resourceId, ResourceType resourceType,  groupPermissionList)')
     print('   getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType, ResourcePermissionType permissionType)')
     print('  string createGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)')
     print('  void updateGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)')
@@ -207,6 +209,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
     print('   getGroupComputeResourcePrefList(AuthzToken authzToken, string groupResourceProfileId)')
     print('   getGroupBatchQueueResourcePolicyList(AuthzToken authzToken, string groupResourceProfileId)')
     print('   getGroupComputeResourcePolicyList(AuthzToken authzToken, string groupResourceProfileId)')
+    print('  GatewayGroups getGatewayGroups(AuthzToken authzToken)')
     print('')
     sys.exit(0)
 
@@ -1288,12 +1291,24 @@ elif cmd == 'shareResourceWithUsers':
         sys.exit(1)
     pp.pprint(client.shareResourceWithUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
 
+elif cmd == 'shareResourceWithGroups':
+    if len(args) != 4:
+        print('shareResourceWithGroups requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.shareResourceWithGroups(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
 elif cmd == 'revokeSharingOfResourceFromUsers':
     if len(args) != 4:
         print('revokeSharingOfResourceFromUsers requires 4 args')
         sys.exit(1)
     pp.pprint(client.revokeSharingOfResourceFromUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
 
+elif cmd == 'revokeSharingOfResourceFromGroups':
+    if len(args) != 4:
+        print('revokeSharingOfResourceFromGroups requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.revokeSharingOfResourceFromGroups(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
 elif cmd == 'getAllAccessibleUsers':
     if len(args) != 4:
         print('getAllAccessibleUsers requires 4 args')
@@ -1384,6 +1399,12 @@ elif cmd == 'getGroupComputeResourcePolicyList':
         sys.exit(1)
     pp.pprint(client.getGroupComputeResourcePolicyList(eval(args[0]), args[1],))
 
+elif cmd == 'getGatewayGroups':
+    if len(args) != 1:
+        print('getGatewayGroups requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayGroups(eval(args[0]),))
+
 else:
     print('Unrecognized method %s' % cmd)
     sys.exit(1)
diff --git a/airavata/api/Airavata.py b/airavata/api/Airavata.py
index 8a09145..f1d4ada 100644
--- a/airavata/api/Airavata.py
+++ b/airavata/api/Airavata.py
@@ -3466,6 +3466,16 @@ class Iface(object):
         """
         pass
 
+    def shareResourceWithGroups(self, authzToken, resourceId, resourceType, groupPermissionList):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - groupPermissionList
+        """
+        pass
+
     def revokeSharingOfResourceFromUsers(self, authzToken, resourceId, resourceType, userPermissionList):
         """
         Parameters:
@@ -3476,6 +3486,16 @@ class Iface(object):
         """
         pass
 
+    def revokeSharingOfResourceFromGroups(self, authzToken, resourceId, resourceType, groupPermissionList):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - groupPermissionList
+        """
+        pass
+
     def getAllAccessibleUsers(self, authzToken, resourceId, resourceType, permissionType):
         """
         Parameters:
@@ -3600,6 +3620,15 @@ class Iface(object):
         """
         pass
 
+    def getGatewayGroups(self, authzToken):
+        """
+        GatewayGroups API methods
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
 
 class Client(Iface):
     def __init__(self, iprot, oprot=None):
@@ -12700,6 +12729,51 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "shareResourceWithUsers failed: unknown result")
 
+    def shareResourceWithGroups(self, authzToken, resourceId, resourceType, groupPermissionList):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - groupPermissionList
+        """
+        self.send_shareResourceWithGroups(authzToken, resourceId, resourceType, groupPermissionList)
+        return self.recv_shareResourceWithGroups()
+
+    def send_shareResourceWithGroups(self, authzToken, resourceId, resourceType, groupPermissionList):
+        self._oprot.writeMessageBegin('shareResourceWithGroups', TMessageType.CALL, self._seqid)
+        args = shareResourceWithGroups_args()
+        args.authzToken = authzToken
+        args.resourceId = resourceId
+        args.resourceType = resourceType
+        args.groupPermissionList = groupPermissionList
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_shareResourceWithGroups(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = shareResourceWithGroups_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, "shareResourceWithGroups failed: unknown result")
+
     def revokeSharingOfResourceFromUsers(self, authzToken, resourceId, resourceType, userPermissionList):
         """
         Parameters:
@@ -12745,6 +12819,51 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "revokeSharingOfResourceFromUsers failed: unknown result")
 
+    def revokeSharingOfResourceFromGroups(self, authzToken, resourceId, resourceType, groupPermissionList):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - groupPermissionList
+        """
+        self.send_revokeSharingOfResourceFromGroups(authzToken, resourceId, resourceType, groupPermissionList)
+        return self.recv_revokeSharingOfResourceFromGroups()
+
+    def send_revokeSharingOfResourceFromGroups(self, authzToken, resourceId, resourceType, groupPermissionList):
+        self._oprot.writeMessageBegin('revokeSharingOfResourceFromGroups', TMessageType.CALL, self._seqid)
+        args = revokeSharingOfResourceFromGroups_args()
+        args.authzToken = authzToken
+        args.resourceId = resourceId
+        args.resourceType = resourceType
+        args.groupPermissionList = groupPermissionList
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_revokeSharingOfResourceFromGroups(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = revokeSharingOfResourceFromGroups_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, "revokeSharingOfResourceFromGroups failed: unknown result")
+
     def getAllAccessibleUsers(self, authzToken, resourceId, resourceType, permissionType):
         """
         Parameters:
@@ -13366,6 +13485,47 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "getGroupComputeResourcePolicyList failed: unknown result")
 
+    def getGatewayGroups(self, authzToken):
+        """
+        GatewayGroups API methods
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getGatewayGroups(authzToken)
+        return self.recv_getGatewayGroups()
+
+    def send_getGatewayGroups(self, authzToken):
+        self._oprot.writeMessageBegin('getGatewayGroups', TMessageType.CALL, self._seqid)
+        args = getGatewayGroups_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGatewayGroups(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGatewayGroups_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, "getGatewayGroups failed: unknown result")
+
 
 class Processor(Iface, TProcessor):
     def __init__(self, handler):
@@ -13538,7 +13698,9 @@ class Processor(Iface, TProcessor):
         self._processMap["getParentDataProduct"] = Processor.process_getParentDataProduct
         self._processMap["getChildDataProducts"] = Processor.process_getChildDataProducts
         self._processMap["shareResourceWithUsers"] = Processor.process_shareResourceWithUsers
+        self._processMap["shareResourceWithGroups"] = Processor.process_shareResourceWithGroups
         self._processMap["revokeSharingOfResourceFromUsers"] = Processor.process_revokeSharingOfResourceFromUsers
+        self._processMap["revokeSharingOfResourceFromGroups"] = Processor.process_revokeSharingOfResourceFromGroups
         self._processMap["getAllAccessibleUsers"] = Processor.process_getAllAccessibleUsers
         self._processMap["createGroupResourceProfile"] = Processor.process_createGroupResourceProfile
         self._processMap["updateGroupResourceProfile"] = Processor.process_updateGroupResourceProfile
@@ -13554,6 +13716,7 @@ class Processor(Iface, TProcessor):
         self._processMap["getGroupComputeResourcePrefList"] = Processor.process_getGroupComputeResourcePrefList
         self._processMap["getGroupBatchQueueResourcePolicyList"] = Processor.process_getGroupBatchQueueResourcePolicyList
         self._processMap["getGroupComputeResourcePolicyList"] = Processor.process_getGroupComputeResourcePolicyList
+        self._processMap["getGatewayGroups"] = Processor.process_getGatewayGroups
 
     def process(self, iprot, oprot):
         (name, type, seqid) = iprot.readMessageBegin()
@@ -18762,6 +18925,37 @@ class Processor(Iface, TProcessor):
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
+    def process_shareResourceWithGroups(self, seqid, iprot, oprot):
+        args = shareResourceWithGroups_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = shareResourceWithGroups_result()
+        try:
+            result.success = self._handler.shareResourceWithGroups(args.authzToken, args.resourceId, args.resourceType, args.groupPermissionList)
+            msg_type = TMessageType.REPLY
+        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+            raise
+        except airavata.api.error.ttypes.InvalidRequestException as ire:
+            msg_type = TMessageType.REPLY
+            result.ire = ire
+        except airavata.api.error.ttypes.AiravataClientException as ace:
+            msg_type = TMessageType.REPLY
+            result.ace = ace
+        except airavata.api.error.ttypes.AiravataSystemException as ase:
+            msg_type = TMessageType.REPLY
+            result.ase = ase
+        except 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("shareResourceWithGroups", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
     def process_revokeSharingOfResourceFromUsers(self, seqid, iprot, oprot):
         args = revokeSharingOfResourceFromUsers_args()
         args.read(iprot)
@@ -18793,6 +18987,37 @@ class Processor(Iface, TProcessor):
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
+    def process_revokeSharingOfResourceFromGroups(self, seqid, iprot, oprot):
+        args = revokeSharingOfResourceFromGroups_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = revokeSharingOfResourceFromGroups_result()
+        try:
+            result.success = self._handler.revokeSharingOfResourceFromGroups(args.authzToken, args.resourceId, args.resourceType, args.groupPermissionList)
+            msg_type = TMessageType.REPLY
+        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+            raise
+        except airavata.api.error.ttypes.InvalidRequestException as ire:
+            msg_type = TMessageType.REPLY
+            result.ire = ire
+        except airavata.api.error.ttypes.AiravataClientException as ace:
+            msg_type = TMessageType.REPLY
+            result.ace = ace
+        except airavata.api.error.ttypes.AiravataSystemException as ase:
+            msg_type = TMessageType.REPLY
+            result.ase = ase
+        except 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("revokeSharingOfResourceFromGroups", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
     def process_getAllAccessibleUsers(self, seqid, iprot, oprot):
         args = getAllAccessibleUsers_args()
         args.read(iprot)
@@ -19258,6 +19483,37 @@ class Processor(Iface, TProcessor):
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
+    def process_getGatewayGroups(self, seqid, iprot, oprot):
+        args = getGatewayGroups_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGatewayGroups_result()
+        try:
+            result.success = self._handler.getGatewayGroups(args.authzToken)
+            msg_type = TMessageType.REPLY
+        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+            raise
+        except airavata.api.error.ttypes.InvalidRequestException as ire:
+            msg_type = TMessageType.REPLY
+            result.ire = ire
+        except airavata.api.error.ttypes.AiravataClientException as ace:
+            msg_type = TMessageType.REPLY
+            result.ace = ace
+        except airavata.api.error.ttypes.AiravataSystemException as ase:
+            msg_type = TMessageType.REPLY
+            result.ase = ase
+        except 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("getGatewayGroups", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
 # HELPER FUNCTIONS AND STRUCTURES
 
 
@@ -23947,25 +24203,1142 @@ class createProject_result(object):
         return not (self == other)
 
 
-class updateProject_args(object):
+class updateProject_args(object):
+    """
+    Attributes:
+     - authzToken
+     - projectId
+     - updatedProject
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'updatedProject', (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), None, ),  # 3
+    )
+
+    def __init__(self, authzToken=None, projectId=None, updatedProject=None,):
+        self.authzToken = authzToken
+        self.projectId = projectId
+        self.updatedProject = updatedProject
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (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 = airavata.model.security.ttypes.AuthzToken()
+                    self.authzToken.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.updatedProject = airavata.model.workspace.ttypes.Project()
+                    self.updatedProject.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('updateProject_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.projectId is not None:
+            oprot.writeFieldBegin('projectId', TType.STRING, 2)
+            oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
+            oprot.writeFieldEnd()
+        if self.updatedProject is not None:
+            oprot.writeFieldBegin('updatedProject', TType.STRUCT, 3)
+            self.updatedProject.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken is unset!')
+        if self.projectId is None:
+            raise TProtocolException(message='Required field projectId is unset!')
+        if self.updatedProject is None:
+            raise TProtocolException(message='Required field updatedProject is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 updateProject_result(object):
+    """
+    Attributes:
+     - ire
+     - ace
+     - ase
+     - pnfe
+     - ae
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+    )
+
+    def __init__(self, ire=None, ace=None, ase=None, pnfe=None, ae=None,):
+        self.ire = ire
+        self.ace = ace
+        self.ase = ase
+        self.pnfe = pnfe
+        self.ae = ae
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (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 = airavata.api.error.ttypes.InvalidRequestException()
+                    self.ire.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
+                    self.pnfe.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRUCT:
+                    self.ae = 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._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('updateProject_result')
+        if self.ire is not None:
+            oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+            self.ire.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ace is not None:
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+            self.ace.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ase is not None:
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            self.ase.write(oprot)
+            oprot.writeFieldEnd()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
+            self.pnfe.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 __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 getProject_args(object):
+    """
+    Attributes:
+     - authzToken
+     - projectId
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
+    )
+
+    def __init__(self, authzToken=None, projectId=None,):
+        self.authzToken = authzToken
+        self.projectId = projectId
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (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 = airavata.model.security.ttypes.AuthzToken()
+                    self.authzToken.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('getProject_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.projectId is not None:
+            oprot.writeFieldBegin('projectId', TType.STRING, 2)
+            oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken is unset!')
+        if self.projectId is None:
+            raise TProtocolException(message='Required field projectId is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 getProject_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - pnfe
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.STRUCT, 'success', (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+    )
+
+    def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=None, ae=None,):
+        self.success = success
+        self.ire = ire
+        self.ace = ace
+        self.ase = ase
+        self.pnfe = pnfe
+        self.ae = ae
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.workspace.ttypes.Project()
+                    self.success.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
+                    self.ire.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
+                    self.pnfe.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRUCT:
+                    self.ae = 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._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('getProject_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ire is not None:
+            oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+            self.ire.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ace is not None:
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+            self.ace.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ase is not None:
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            self.ase.write(oprot)
+            oprot.writeFieldEnd()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
+            self.pnfe.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 __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 deleteProject_args(object):
+    """
+    Attributes:
+     - authzToken
+     - projectId
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
+    )
+
+    def __init__(self, authzToken=None, projectId=None,):
+        self.authzToken = authzToken
+        self.projectId = projectId
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (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 = airavata.model.security.ttypes.AuthzToken()
+                    self.authzToken.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('deleteProject_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.projectId is not None:
+            oprot.writeFieldBegin('projectId', TType.STRING, 2)
+            oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken is unset!')
+        if self.projectId is None:
+            raise TProtocolException(message='Required field projectId is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 deleteProject_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - pnfe
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+    )
+
+    def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=None, ae=None,):
+        self.success = success
+        self.ire = ire
+        self.ace = ace
+        self.ase = ase
+        self.pnfe = pnfe
+        self.ae = ae
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
+                    self.ire.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
+                    self.pnfe.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRUCT:
+                    self.ae = 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._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('deleteProject_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.ace is not None:
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+            self.ace.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ase is not None:
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            self.ase.write(oprot)
+            oprot.writeFieldEnd()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
+            self.pnfe.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 __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 getUserProjects_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - userName
+     - limit
+     - offset
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
+        (4, TType.I32, 'limit', None, None, ),  # 4
+        (5, TType.I32, 'offset', None, None, ),  # 5
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, limit=None, offset=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.userName = userName
+        self.limit = limit
+        self.offset = offset
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (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 = airavata.model.security.ttypes.AuthzToken()
+                    self.authzToken.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I32:
+                    self.limit = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I32:
+                    self.offset = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('getUserProjects_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.userName is not None:
+            oprot.writeFieldBegin('userName', TType.STRING, 3)
+            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
+            oprot.writeFieldEnd()
+        if self.limit is not None:
+            oprot.writeFieldBegin('limit', TType.I32, 4)
+            oprot.writeI32(self.limit)
+            oprot.writeFieldEnd()
+        if self.offset is not None:
+            oprot.writeFieldBegin('offset', TType.I32, 5)
+            oprot.writeI32(self.offset)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.userName is None:
+            raise TProtocolException(message='Required field userName is unset!')
+        if self.limit is None:
+            raise TProtocolException(message='Required field limit is unset!')
+        if self.offset is None:
+            raise TProtocolException(message='Required field offset is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 getUserProjects_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), False), None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+    )
+
+    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
+        self.success = success
+        self.ire = ire
+        self.ace = ace
+        self.ase = ase
+        self.ae = ae
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype56, _size53) = iprot.readListBegin()
+                    for _i57 in range(_size53):
+                        _elem58 = airavata.model.workspace.ttypes.Project()
+                        _elem58.read(iprot)
+                        self.success.append(_elem58)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
+                    self.ire.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.ae = 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._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('getUserProjects_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter59 in self.success:
+                iter59.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.ire is not None:
+            oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+            self.ire.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ace is not None:
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+            self.ace.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ase is not None:
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            self.ase.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ae is not None:
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+            self.ae.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 searchProjects_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
+        (4, TType.MAP, 'filters', (TType.I32, None, TType.STRING, 'UTF8', False), None, ),  # 4
+        (5, TType.I32, 'limit', None, None, ),  # 5
+        (6, TType.I32, 'offset', None, None, ),  # 6
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.userName = userName
+        self.filters = filters
+        self.limit = limit
+        self.offset = offset
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (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 = airavata.model.security.ttypes.AuthzToken()
+                    self.authzToken.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.filters = {}
+                    (_ktype61, _vtype62, _size60) = iprot.readMapBegin()
+                    for _i64 in range(_size60):
+                        _key65 = iprot.readI32()
+                        _val66 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.filters[_key65] = _val66
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I32:
+                    self.limit = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I32:
+                    self.offset = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('searchProjects_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.userName is not None:
+            oprot.writeFieldBegin('userName', TType.STRING, 3)
+            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
+            oprot.writeFieldEnd()
+        if self.filters is not None:
+            oprot.writeFieldBegin('filters', TType.MAP, 4)
+            oprot.writeMapBegin(TType.I32, TType.STRING, len(self.filters))
+            for kiter67, viter68 in self.filters.items():
+                oprot.writeI32(kiter67)
+                oprot.writeString(viter68.encode('utf-8') if sys.version_info[0] == 2 else viter68)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        if self.limit is not None:
+            oprot.writeFieldBegin('limit', TType.I32, 5)
+            oprot.writeI32(self.limit)
+            oprot.writeFieldEnd()
+        if self.offset is not None:
+            oprot.writeFieldBegin('offset', TType.I32, 6)
+            oprot.writeI32(self.offset)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.userName is None:
+            raise TProtocolException(message='Required field userName is unset!')
+        if self.limit is None:
+            raise TProtocolException(message='Required field limit is unset!')
+        if self.offset is None:
+            raise TProtocolException(message='Required field offset is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 searchProjects_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), False), None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+    )
+
+    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
+        self.success = success
+        self.ire = ire
+        self.ace = ace
+        self.ase = ase
+        self.ae = ae
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype72, _size69) = iprot.readListBegin()
+                    for _i73 in range(_size69):
+                        _elem74 = airavata.model.workspace.ttypes.Project()
+                        _elem74.read(iprot)
+                        self.success.append(_elem74)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
+                if ftype == TType.STRUCT:
+                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
+                    self.ire.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.ae = 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._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('searchProjects_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter75 in self.success:
+                iter75.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.ire is not None:
+            oprot.writeFieldBegin('ire', TType.STRUCT, 1)
+            self.ire.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ace is not None:
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+            self.ace.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ase is not None:
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            self.ase.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ae is not None:
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+            self.ae.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        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 searchExperiments_args(object):
     """
     Attributes:
      - authzToken
-     - projectId
-     - updatedProject
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'updatedProject', (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
+        (4, TType.MAP, 'filters', (TType.I32, None, TType.STRING, 'UTF8', False), None, ),  # 4
+        (5, TType.I32, 'limit', None, None, ),  # 5
+        (6, TType.I32, 'offset', None, None, ),  # 6
     )
 
-    def __init__(self, authzToken=None, projectId=None, updatedProject=None,):
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
         self.authzToken = authzToken
-        self.projectId = projectId
-        self.updatedProject = updatedProject
+        self.gatewayId = gatewayId
+        self.userName = userName
+        self.filters = filters
+        self.limit = limit
+        self.offset = offset
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -23984,13 +25357,33 @@ class updateProject_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.updatedProject = airavata.model.workspace.ttypes.Project()
-                    self.updatedProject.read(iprot)
+                if ftype == TType.STRING:
+                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.MAP:
+                    self.filters = {}
+                    (_ktype77, _vtype78, _size76) = iprot.readMapBegin()
+                    for _i80 in range(_size76):
+                        _key81 = iprot.readI32()
+                        _val82 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.filters[_key81] = _val82
+                    iprot.readMapEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I32:
+                    self.limit = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I32:
+                    self.offset = iprot.readI32()
                 else:
                     iprot.skip(ftype)
             else:
@@ -24002,18 +25395,34 @@ class updateProject_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateProject_args')
+        oprot.writeStructBegin('searchExperiments_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.projectId is not None:
-            oprot.writeFieldBegin('projectId', TType.STRING, 2)
-            oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.updatedProject is not None:
-            oprot.writeFieldBegin('updatedProject', TType.STRUCT, 3)
-            self.updatedProject.write(oprot)
+        if self.userName is not None:
+            oprot.writeFieldBegin('userName', TType.STRING, 3)
+            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
+            oprot.writeFieldEnd()
+        if self.filters is not None:
+            oprot.writeFieldBegin('filters', TType.MAP, 4)
+            oprot.writeMapBegin(TType.I32, TType.STRING, len(self.filters))
+            for kiter83, viter84 in self.filters.items():
+                oprot.writeI32(kiter83)
+                oprot.writeString(viter84.encode('utf-8') if sys.version_info[0] == 2 else viter84)
+            oprot.writeMapEnd()
+            oprot.writeFieldEnd()
+        if self.limit is not None:
+            oprot.writeFieldBegin('limit', TType.I32, 5)
+            oprot.writeI32(self.limit)
+            oprot.writeFieldEnd()
+        if self.offset is not None:
+            oprot.writeFieldBegin('offset', TType.I32, 6)
+            oprot.writeI32(self.offset)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -24021,10 +25430,14 @@ class updateProject_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.projectId is None:
-            raise TProtocolException(message='Required field projectId is unset!')
-        if self.updatedProject is None:
-            raise TProtocolException(message='Required field updatedProject is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.userName is None:
+            raise TProtocolException(message='Required field userName is unset!')
+        if self.limit is None:
+            raise TProtocolException(message='Required field limit is unset!')
+        if self.offset is None:
+            raise TProtocolException(message='Required field offset is unset!')
         return
 
     def __repr__(self):
@@ -24039,30 +25452,29 @@ class updateProject_args(object):
         return not (self == other)
 
 
-class updateProject_result(object):
+class searchExperiments_result(object):
     """
     Attributes:
+     - success
      - ire
      - ace
      - ase
-     - pnfe
      - ae
     """
 
     thrift_spec = (
-        None,  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentSummaryModel, airavata.model.experiment.ttypes.ExperimentSummaryModel.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, ire=None, ace=None, ase=None, pnfe=None, ae=None,):
+    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
+        self.success = success
         self.ire = ire
         self.ace = ace
         self.ase = ase
-        self.pnfe = pnfe
         self.ae = ae
 
     def read(self, iprot):
@@ -24074,7 +25486,18 @@ class updateProject_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 1:
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype88, _size85) = iprot.readListBegin()
+                    for _i89 in range(_size85):
+                        _elem90 = airavata.model.experiment.ttypes.ExperimentSummaryModel()
+                        _elem90.read(iprot)
+                        self.success.append(_elem90)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -24094,12 +25517,6 @@ class updateProject_result(object):
                     iprot.skip(ftype)
             elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
-                    self.pnfe.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
                 else:
@@ -24113,7 +25530,14 @@ class updateProject_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateProject_result')
+        oprot.writeStructBegin('searchExperiments_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter91 in self.success:
+                iter91.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -24126,12 +25550,8 @@ class updateProject_result(object):
             oprot.writeFieldBegin('ase', TType.STRUCT, 3)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
-        if self.pnfe is not None:
-            oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
-            self.pnfe.write(oprot)
-            oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -24152,22 +25572,37 @@ class updateProject_result(object):
         return not (self == other)
 
 
-class getProject_args(object):
+class getExperimentStatistics_args(object):
     """
     Attributes:
      - authzToken
-     - projectId
+     - gatewayId
+     - fromTime
+     - toTime
+     - userName
+     - applicationName
+     - resourceHostName
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.I64, 'fromTime', None, None, ),  # 3
+        (4, TType.I64, 'toTime', None, None, ),  # 4
+        (5, TType.STRING, 'userName', 'UTF8', None, ),  # 5
+        (6, TType.STRING, 'applicationName', 'UTF8', None, ),  # 6
+        (7, TType.STRING, 'resourceHostName', 'UTF8', None, ),  # 7
     )
 
-    def __init__(self, authzToken=None, projectId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, fromTime=None, toTime=None, userName=None, applicationName=None, resourceHostName=None,):
         self.authzToken = authzToken
-        self.projectId = projectId
+        self.gatewayId = gatewayId
+        self.fromTime = fromTime
+        self.toTime = toTime
+        self.userName = userName
+        self.applicationName = applicationName
+        self.resourceHostName = resourceHostName
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -24186,7 +25621,32 @@ class getProject_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I64:
+                    self.fromTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.toTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.STRING:
+                    self.applicationName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.STRING:
+                    self.resourceHostName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -24198,14 +25658,34 @@ class getProject_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getProject_args')
+        oprot.writeStructBegin('getExperimentStatistics_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.projectId is not None:
-            oprot.writeFieldBegin('projectId', TType.STRING, 2)
-            oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.fromTime is not None:
+            oprot.writeFieldBegin('fromTime', TType.I64, 3)
+            oprot.writeI64(self.fromTime)
+            oprot.writeFieldEnd()
+        if self.toTime is not None:
+            oprot.writeFieldBegin('toTime', TType.I64, 4)
+            oprot.writeI64(self.toTime)
+            oprot.writeFieldEnd()
+        if self.userName is not None:
+            oprot.writeFieldBegin('userName', TType.STRING, 5)
+            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
+            oprot.writeFieldEnd()
+        if self.applicationName is not None:
+            oprot.writeFieldBegin('applicationName', TType.STRING, 6)
+            oprot.writeString(self.applicationName.encode('utf-8') if sys.version_info[0] == 2 else self.applicationName)
+            oprot.writeFieldEnd()
+        if self.resourceHostName is not None:
+            oprot.writeFieldBegin('resourceHostName', TType.STRING, 7)
+            oprot.writeString(self.resourceHostName.encode('utf-8') if sys.version_info[0] == 2 else self.resourceHostName)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -24213,8 +25693,12 @@ class getProject_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.projectId is None:
-            raise TProtocolException(message='Required field projectId is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.fromTime is None:
+            raise TProtocolException(message='Required field fromTime is unset!')
+        if self.toTime is None:
+            raise TProtocolException(message='Required field toTime is unset!')
         return
 
     def __repr__(self):
@@ -24229,32 +25713,29 @@ class getProject_args(object):
         return not (self == other)
 
 
-class getProject_result(object):
+class getExperimentStatistics_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - pnfe
      - ae
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentStatistics, airavata.model.experiment.ttypes.ExperimentStatistics.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=None, ae=None,):
+    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
         self.success = success
         self.ire = ire
         self.ace = ace
         self.ase = ase
-        self.pnfe = pnfe
         self.ae = ae
 
     def read(self, iprot):
@@ -24268,7 +25749,7 @@ class getProject_result(object):
                 break
             if fid == 0:
                 if ftype == TType.STRUCT:
-                    self.success = airavata.model.workspace.ttypes.Project()
+                    self.success = airavata.model.experiment.ttypes.ExperimentStatistics()
                     self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
@@ -24292,12 +25773,6 @@ class getProject_result(object):
                     iprot.skip(ftype)
             elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
-                    self.pnfe.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
                 else:
@@ -24311,7 +25786,7 @@ class getProject_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getProject_result')
+        oprot.writeStructBegin('getExperimentStatistics_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRUCT, 0)
             self.success.write(oprot)
@@ -24328,12 +25803,8 @@ class getProject_result(object):
             oprot.writeFieldBegin('ase', TType.STRUCT, 3)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
-        if self.pnfe is not None:
-            oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
-            self.pnfe.write(oprot)
-            oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -24354,22 +25825,28 @@ class getProject_result(object):
         return not (self == other)
 
 
-class deleteProject_args(object):
+class getExperimentsInProject_args(object):
     """
     Attributes:
      - authzToken
      - projectId
+     - limit
+     - offset
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
+        (3, TType.I32, 'limit', None, None, ),  # 3
+        (4, TType.I32, 'offset', None, None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, projectId=None,):
+    def __init__(self, authzToken=None, projectId=None, limit=None, offset=None,):
         self.authzToken = authzToken
         self.projectId = projectId
+        self.limit = limit
+        self.offset = offset
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -24391,6 +25868,16 @@ class deleteProject_args(object):
                     self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I32:
+                    self.limit = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I32:
+                    self.offset = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -24400,7 +25887,7 @@ class deleteProject_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteProject_args')
+        oprot.writeStructBegin('getExperimentsInProject_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -24409,6 +25896,14 @@ class deleteProject_args(object):
             oprot.writeFieldBegin('projectId', TType.STRING, 2)
             oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
             oprot.writeFieldEnd()
+        if self.limit is not None:
+            oprot.writeFieldBegin('limit', TType.I32, 3)
+            oprot.writeI32(self.limit)
+            oprot.writeFieldEnd()
+        if self.offset is not None:
+            oprot.writeFieldBegin('offset', TType.I32, 4)
+            oprot.writeI32(self.offset)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -24417,6 +25912,10 @@ class deleteProject_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.projectId is None:
             raise TProtocolException(message='Required field projectId is unset!')
+        if self.limit is None:
+            raise TProtocolException(message='Required field limit is unset!')
+        if self.offset is None:
+            raise TProtocolException(message='Required field offset is unset!')
         return
 
     def __repr__(self):
@@ -24431,7 +25930,7 @@ class deleteProject_args(object):
         return not (self == other)
 
 
-class deleteProject_result(object):
+class getExperimentsInProject_result(object):
     """
     Attributes:
      - success
@@ -24443,7 +25942,7 @@ class deleteProject_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -24469,8 +25968,14 @@ class deleteProject_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype95, _size92) = iprot.readListBegin()
+                    for _i96 in range(_size92):
+                        _elem97 = airavata.model.experiment.ttypes.ExperimentModel()
+                        _elem97.read(iprot)
+                        self.success.append(_elem97)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -24512,10 +26017,13 @@ class deleteProject_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteProject_result')
+        oprot.writeStructBegin('getExperimentsInProject_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter98 in self.success:
+                iter98.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -24555,7 +26063,7 @@ class deleteProject_result(object):
         return not (self == other)
 
 
-class getUserProjects_args(object):
+class getUserExperiments_args(object):
     """
     Attributes:
      - authzToken
@@ -24625,7 +26133,7 @@ class getUserProjects_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getUserProjects_args')
+        oprot.writeStructBegin('getUserExperiments_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -24674,7 +26182,7 @@ class getUserProjects_args(object):
         return not (self == other)
 
 
-class getUserProjects_result(object):
+class getUserExperiments_result(object):
     """
     Attributes:
      - success
@@ -24685,7 +26193,7 @@ class getUserProjects_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), False), None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -24711,11 +26219,11 @@ class getUserProjects_result(object):
             if fid == 0:
                 if ftype == TType.LIST:
                     self.success = []
-                    (_etype56, _size53) = iprot.readListBegin()
-                    for _i57 in range(_size53):
-                        _elem58 = airavata.model.workspace.ttypes.Project()
-                        _elem58.read(iprot)
-                        self.success.append(_elem58)
+                    (_etype102, _size99) = iprot.readListBegin()
+                    for _i103 in range(_size99):
+                        _elem104 = airavata.model.experiment.ttypes.ExperimentModel()
+                        _elem104.read(iprot)
+                        self.success.append(_elem104)
                     iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
@@ -24752,12 +26260,12 @@ class getUserProjects_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getUserProjects_result')
+        oprot.writeStructBegin('getUserExperiments_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.LIST, 0)
             oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter59 in self.success:
-                iter59.write(oprot)
+            for iter105 in self.success:
+                iter105.write(oprot)
             oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
@@ -24794,34 +26302,25 @@ class getUserProjects_result(object):
         return not (self == other)
 
 
-class searchProjects_args(object):
+class createExperiment_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
-     - userName
-     - filters
-     - limit
-     - offset
+     - experiment
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
-        (4, TType.MAP, 'filters', (TType.I32, None, TType.STRING, 'UTF8', False), None, ),  # 4
-        (5, TType.I32, 'limit', None, None, ),  # 5
-        (6, TType.I32, 'offset', None, None, ),  # 6
+        (3, TType.STRUCT, 'experiment', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
+    def __init__(self, authzToken=None, gatewayId=None, experiment=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
-        self.userName = userName
-        self.filters = filters
-        self.limit = limit
-        self.offset = offset
+        self.experiment = experiment
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -24844,29 +26343,9 @@ class searchProjects_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRING:
-                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.MAP:
-                    self.filters = {}
-                    (_ktype61, _vtype62, _size60) = iprot.readMapBegin()
-                    for _i64 in range(_size60):
-                        _key65 = iprot.readI32()
-                        _val66 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.filters[_key65] = _val66
-                    iprot.readMapEnd()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.I32:
-                    self.limit = iprot.readI32()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 6:
-                if ftype == TType.I32:
-                    self.offset = iprot.readI32()
+                if ftype == TType.STRUCT:
+                    self.experiment = airavata.model.experiment.ttypes.ExperimentModel()
+                    self.experiment.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -24878,7 +26357,7 @@ class searchProjects_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('searchProjects_args')
+        oprot.writeStructBegin('createExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -24887,25 +26366,9 @@ class searchProjects_args(object):
             oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.userName is not None:
-            oprot.writeFieldBegin('userName', TType.STRING, 3)
-            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
-            oprot.writeFieldEnd()
-        if self.filters is not None:
-            oprot.writeFieldBegin('filters', TType.MAP, 4)
-            oprot.writeMapBegin(TType.I32, TType.STRING, len(self.filters))
-            for kiter67, viter68 in self.filters.items():
-                oprot.writeI32(kiter67)
-                oprot.writeString(viter68.encode('utf-8') if sys.version_info[0] == 2 else viter68)
-            oprot.writeMapEnd()
-            oprot.writeFieldEnd()
-        if self.limit is not None:
-            oprot.writeFieldBegin('limit', TType.I32, 5)
-            oprot.writeI32(self.limit)
-            oprot.writeFieldEnd()
-        if self.offset is not None:
-            oprot.writeFieldBegin('offset', TType.I32, 6)
-            oprot.writeI32(self.offset)
+        if self.experiment is not None:
+            oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
+            self.experiment.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -24915,12 +26378,8 @@ class searchProjects_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.userName is None:
-            raise TProtocolException(message='Required field userName is unset!')
-        if self.limit is None:
-            raise TProtocolException(message='Required field limit is unset!')
-        if self.offset is None:
-            raise TProtocolException(message='Required field offset is unset!')
+        if self.experiment is None:
+            raise TProtocolException(message='Required field experiment is unset!')
         return
 
     def __repr__(self):
@@ -24935,7 +26394,7 @@ class searchProjects_args(object):
         return not (self == other)
 
 
-class searchProjects_result(object):
+class createExperiment_result(object):
     """
     Attributes:
      - success
@@ -24946,7 +26405,7 @@ class searchProjects_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -24970,14 +26429,8 @@ class searchProjects_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype72, _size69) = iprot.readListBegin()
-                    for _i73 in range(_size69):
-                        _elem74 = airavata.model.workspace.ttypes.Project()
-                        _elem74.read(iprot)
-                        self.success.append(_elem74)
-                    iprot.readListEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -25013,13 +26466,10 @@ class searchProjects_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('searchProjects_result')
+        oprot.writeStructBegin('createExperiment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter75 in self.success:
-                iter75.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -25055,34 +26505,22 @@ class searchProjects_result(object):
         return not (self == other)
 
 
-class searchExperiments_args(object):
+class deleteExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - userName
-     - filters
-     - limit
-     - offset
+     - experimentId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
-        (4, TType.MAP, 'filters', (TType.I32, None, TType.STRING, 'UTF8', False), None, ),  # 4
-        (5, TType.I32, 'limit', None, None, ),  # 5
-        (6, TType.I32, 'offset', None, None, ),  # 6
+        (2, TType.STRING, 'experimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
+    def __init__(self, authzToken=None, experimentId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.userName = userName
-        self.filters = filters
-        self.limit = limit
-        self.offset = offset
+        self.experimentId = experimentId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -25101,33 +26539,7 @@ class searchExperiments_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.MAP:
-                    self.filters = {}
-                    (_ktype77, _vtype78, _size76) = iprot.readMapBegin()
-                    for _i80 in range(_size76):
-                        _key81 = iprot.readI32()
-                        _val82 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.filters[_key81] = _val82
-                    iprot.readMapEnd()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.I32:
-                    self.limit = iprot.readI32()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 6:
-                if ftype == TType.I32:
-                    self.offset = iprot.readI32()
+                    self.experimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -25139,34 +26551,14 @@ class searchExperiments_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('searchExperiments_args')
+        oprot.writeStructBegin('deleteExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
-            oprot.writeFieldEnd()
-        if self.userName is not None:
-            oprot.writeFieldBegin('userName', TType.STRING, 3)
-            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
-            oprot.writeFieldEnd()
-        if self.filters is not None:
-            oprot.writeFieldBegin('filters', TType.MAP, 4)
-            oprot.writeMapBegin(TType.I32, TType.STRING, len(self.filters))
-            for kiter83, viter84 in self.filters.items():
-                oprot.writeI32(kiter83)
-                oprot.writeString(viter84.encode('utf-8') if sys.version_info[0] == 2 else viter84)
-            oprot.writeMapEnd()
-            oprot.writeFieldEnd()
-        if self.limit is not None:
-            oprot.writeFieldBegin('limit', TType.I32, 5)
-            oprot.writeI32(self.limit)
-            oprot.writeFieldEnd()
-        if self.offset is not None:
-            oprot.writeFieldBegin('offset', TType.I32, 6)
-            oprot.writeI32(self.offset)
+        if self.experimentId is not None:
+            oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+            oprot.writeString(self.experimentId.encode('utf-8') if sys.version_info[0] == 2 else self.experimentId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -25174,14 +26566,8 @@ class searchExperiments_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.userName is None:
-            raise TProtocolException(message='Required field userName is unset!')
-        if self.limit is None:
-            raise TProtocolException(message='Required field limit is unset!')
-        if self.offset is None:
-            raise TProtocolException(message='Required field offset is unset!')
+        if self.experimentId is None:
+            raise TProtocolException(message='Required field experimentId is unset!')
         return
 
     def __repr__(self):
@@ -25196,7 +26582,7 @@ class searchExperiments_args(object):
         return not (self == other)
 
 
-class searchExperiments_result(object):
+class deleteExperiment_result(object):
     """
     Attributes:
      - success
@@ -25207,7 +26593,7 @@ class searchExperiments_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentSummaryModel, airavata.model.experiment.ttypes.ExperimentSummaryModel.thrift_spec), False), None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -25231,14 +26617,8 @@ class searchExperiments_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype88, _size85) = iprot.readListBegin()
-                    for _i89 in range(_size85):
-                        _elem90 = airavata.model.experiment.ttypes.ExperimentSummaryModel()
-                        _elem90.read(iprot)
-                        self.success.append(_elem90)
-                    iprot.readListEnd()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -25274,13 +26654,10 @@ class searchExperiments_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('searchExperiments_result')
+        oprot.writeStructBegin('deleteExperiment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter91 in self.success:
-                iter91.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -25316,37 +26693,22 @@ class searchExperiments_result(object):
         return not (self == other)
 
 
-class getExperimentStatistics_args(object):
+class getExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - fromTime
-     - toTime
-     - userName
-     - applicationName
-     - resourceHostName
+     - airavataExperimentId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.I64, 'fromTime', None, None, ),  # 3
-        (4, TType.I64, 'toTime', None, None, ),  # 4
-        (5, TType.STRING, 'userName', 'UTF8', None, ),  # 5
-        (6, TType.STRING, 'applicationName', 'UTF8', None, ),  # 6
-        (7, TType.STRING, 'resourceHostName', 'UTF8', None, ),  # 7
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, fromTime=None, toTime=None, userName=None, applicationName=None, resourceHostName=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.fromTime = fromTime
-        self.toTime = toTime
-        self.userName = userName
-        self.applicationName = applicationName
-        self.resourceHostName = resourceHostName
+        self.airavataExperimentId = airavataExperimentId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -25365,32 +26727,7 @@ class getExperimentStatistics_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.I64:
-                    self.fromTime = iprot.readI64()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.I64:
-                    self.toTime = iprot.readI64()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.STRING:
-                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 6:
-                if ftype == TType.STRING:
-                    self.applicationName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 7:
-                if ftype == TType.STRING:
-                    self.resourceHostName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -25402,34 +26739,14 @@ class getExperimentStatistics_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentStatistics_args')
+        oprot.writeStructBegin('getExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
-            oprot.writeFieldEnd()
-        if self.fromTime is not None:
-            oprot.writeFieldBegin('fromTime', TType.I64, 3)
-            oprot.writeI64(self.fromTime)
-            oprot.writeFieldEnd()
-        if self.toTime is not None:
-            oprot.writeFieldBegin('toTime', TType.I64, 4)
-            oprot.writeI64(self.toTime)
-            oprot.writeFieldEnd()
-        if self.userName is not None:
-            oprot.writeFieldBegin('userName', TType.STRING, 5)
-            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
-            oprot.writeFieldEnd()
-        if self.applicationName is not None:
-            oprot.writeFieldBegin('applicationName', TType.STRING, 6)
-            oprot.writeString(self.applicationName.encode('utf-8') if sys.version_info[0] == 2 else self.applicationName)
-            oprot.writeFieldEnd()
-        if self.resourceHostName is not None:
-            oprot.writeFieldBegin('resourceHostName', TType.STRING, 7)
-            oprot.writeString(self.resourceHostName.encode('utf-8') if sys.version_info[0] == 2 else self.resourceHostName)
+        if self.airavataExperimentId is not None:
+            oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+            oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -25437,12 +26754,8 @@ class getExperimentStatistics_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.fromTime is None:
-            raise TProtocolException(message='Required field fromTime is unset!')
-        if self.toTime is None:
-            raise TProtocolException(message='Required field toTime is unset!')
+        if self.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -25457,27 +26770,30 @@ class getExperimentStatistics_args(object):
         return not (self == other)
 
 
-class getExperimentStatistics_result(object):
+class getExperiment_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentStatistics, airavata.model.experiment.ttypes.ExperimentStatistics.thrift_spec), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
     )
 
-    def __init__(self, success=None, ire=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
         self.ase = ase
         self.ae = ae
@@ -25493,7 +26809,7 @@ class getExperimentStatistics_result(object):
                 break
             if fid == 0:
                 if ftype == TType.STRUCT:
-                    self.success = airavata.model.experiment.ttypes.ExperimentStatistics()
+                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
                     self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
@@ -25505,17 +26821,23 @@ class getExperimentStatistics_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
+                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
+                    self.enf.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
                     self.ace = airavata.api.error.ttypes.AiravataClientException()
                     self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
+            elif fid == 4:
                 if ftype == TType.STRUCT:
                     self.ase = airavata.api.error.ttypes.AiravataSystemException()
                     self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 4:
+            elif fid == 5:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -25530,7 +26852,7 @@ class getExperimentStatistics_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentStatistics_result')
+        oprot.writeStructBegin('getExperiment_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRUCT, 0)
             self.success.write(oprot)
@@ -25539,16 +26861,20 @@ class getExperimentStatistics_result(object):
             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, 2)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 3)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -25569,28 +26895,22 @@ class getExperimentStatistics_result(object):
         return not (self == other)
 
 
-class getExperimentsInProject_args(object):
+class getExperimentByAdmin_args(object):
     """
     Attributes:
      - authzToken
-     - projectId
-     - limit
-     - offset
+     - airavataExperimentId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
-        (3, TType.I32, 'limit', None, None, ),  # 3
-        (4, TType.I32, 'offset', None, None, ),  # 4
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, projectId=None, limit=None, offset=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.projectId = projectId
-        self.limit = limit
-        self.offset = offset
+        self.airavataExperimentId = airavataExperimentId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -25609,17 +26929,7 @@ class getExperimentsInProject_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.I32:
-                    self.limit = iprot.readI32()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.I32:
-                    self.offset = iprot.readI32()
+                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -25631,22 +26941,14 @@ class getExperimentsInProject_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentsInProject_args')
+        oprot.writeStructBegin('getExperimentByAdmin_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.projectId is not None:
-            oprot.writeFieldBegin('projectId', TType.STRING, 2)
-            oprot.writeString(self.projectId.encode('utf-8') if sys.version_info[0] == 2 else self.projectId)
-            oprot.writeFieldEnd()
-        if self.limit is not None:
-            oprot.writeFieldBegin('limit', TType.I32, 3)
-            oprot.writeI32(self.limit)
-            oprot.writeFieldEnd()
-        if self.offset is not None:
-            oprot.writeFieldBegin('offset', TType.I32, 4)
-            oprot.writeI32(self.offset)
+        if self.airavataExperimentId is not None:
+            oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+            oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -25654,12 +26956,8 @@ class getExperimentsInProject_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.projectId is None:
-            raise TProtocolException(message='Required field projectId is unset!')
-        if self.limit is None:
-            raise TProtocolException(message='Required field limit is unset!')
-        if self.offset is None:
-            raise TProtocolException(message='Required field offset is unset!')
+        if self.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -25674,32 +26972,32 @@ class getExperimentsInProject_args(object):
         return not (self == other)
 
 
-class getExperimentsInProject_result(object):
+class getExperimentByAdmin_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
-     - pnfe
      - ae
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), False), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 4
+        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
         (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
     )
 
-    def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=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
         self.ase = ase
-        self.pnfe = pnfe
         self.ae = ae
 
     def read(self, iprot):
@@ -25712,14 +27010,9 @@ class getExperimentsInProject_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype95, _size92) = iprot.readListBegin()
-                    for _i96 in range(_size92):
-                        _elem97 = airavata.model.experiment.ttypes.ExperimentModel()
-                        _elem97.read(iprot)
-                        self.success.append(_elem97)
-                    iprot.readListEnd()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -25730,20 +27023,20 @@ class getExperimentsInProject_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
-                    self.ace = airavata.api.error.ttypes.AiravataClientException()
-                    self.ace.read(iprot)
+                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
+                    self.enf.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
-                    self.ase.read(iprot)
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
-                    self.pnfe.read(iprot)
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 5:
@@ -25761,30 +27054,27 @@ class getExperimentsInProject_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentsInProject_result')
+        oprot.writeStructBegin('getExperimentByAdmin_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter98 in self.success:
-                iter98.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
             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, 2)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 3)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
-        if self.pnfe is not None:
-            oprot.writeFieldBegin('pnfe', TType.STRUCT, 4)
-            self.pnfe.write(oprot)
-            oprot.writeFieldEnd()
         if self.ae is not None:
             oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
@@ -25807,31 +27097,22 @@ class getExperimentsInProject_result(object):
         return not (self == other)
 
 
-class getUserExperiments_args(object):
+class getDetailedExperimentTree_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - userName
-     - limit
-     - offset
+     - airavataExperimentId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
-        (4, TType.I32, 'limit', None, None, ),  # 4
-        (5, TType.I32, 'offset', None, None, ),  # 5
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, userName=None, limit=None, offset=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.userName = userName
-        self.limit = limit
-        self.offset = offset
+        self.airavataExperimentId = airavataExperimentId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -25850,22 +27131,7 @@ class getUserExperiments_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.I32:
-                    self.limit = iprot.readI32()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.I32:
-                    self.offset = iprot.readI32()
+                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -25877,26 +27143,14 @@ class getUserExperiments_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getUserExperiments_args')
+        oprot.writeStructBegin('getDetailedExperimentTree_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
-            oprot.writeFieldEnd()
-        if self.userName is not None:
-            oprot.writeFieldBegin('userName', TType.STRING, 3)
-            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
-            oprot.writeFieldEnd()
-        if self.limit is not None:
-            oprot.writeFieldBegin('limit', TType.I32, 4)
-            oprot.writeI32(self.limit)
-            oprot.writeFieldEnd()
-        if self.offset is not None:
-            oprot.writeFieldBegin('offset', TType.I32, 5)
-            oprot.writeI32(self.offset)
+        if self.airavataExperimentId is not None:
+            oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+            oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -25904,14 +27158,8 @@ class getUserExperiments_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.userName is None:
-            raise TProtocolException(message='Required field userName is unset!')
-        if self.limit is None:
-            raise TProtocolException(message='Required field limit is unset!')
-        if self.offset is None:
-            raise TProtocolException(message='Required field offset is unset!')
+        if self.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -25926,27 +27174,30 @@ class getUserExperiments_args(object):
         return not (self == other)
 
 
-class getUserExperiments_result(object):
+class getDetailedExperimentTree_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), False), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
     )
 
-    def __init__(self, success=None, ire=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
         self.ase = ase
         self.ae = ae
@@ -25961,14 +27212,9 @@ class getUserExperiments_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype102, _size99) = iprot.readListBegin()
-                    for _i103 in range(_size99):
-                        _elem104 = airavata.model.experiment.ttypes.ExperimentModel()
-                        _elem104.read(iprot)
-                        self.success.append(_elem104)
-                    iprot.readListEnd()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -25979,17 +27225,23 @@ class getUserExperiments_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
+                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
+                    self.enf.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
                     self.ace = airavata.api.error.ttypes.AiravataClientException()
                     self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
+            elif fid == 4:
                 if ftype == TType.STRUCT:
                     self.ase = airavata.api.error.ttypes.AiravataSystemException()
                     self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 4:
+            elif fid == 5:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -26004,28 +27256,29 @@ class getUserExperiments_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getUserExperiments_result')
+        oprot.writeStructBegin('getDetailedExperimentTree_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter105 in self.success:
-                iter105.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
             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, 2)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 3)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -26046,24 +27299,24 @@ class getUserExperiments_result(object):
         return not (self == other)
 
 
-class createExperiment_args(object):
+class updateExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
+     - airavataExperimentId
      - experiment
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
         (3, TType.STRUCT, 'experiment', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, experiment=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, experiment=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
+        self.airavataExperimentId = airavataExperimentId
         self.experiment = experiment
 
     def read(self, iprot):
@@ -26083,7 +27336,7 @@ class createExperiment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
@@ -26101,14 +27354,14 @@ class createExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('createExperiment_args')
+        oprot.writeStructBegin('updateExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+        if self.airavataExperimentId is not None:
+            oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+            oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
         if self.experiment is not None:
             oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
@@ -26120,8 +27373,8 @@ class createExperiment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         if self.experiment is None:
             raise TProtocolException(message='Required field experiment is unset!')
         return
@@ -26138,27 +27391,28 @@ class createExperiment_args(object):
         return not (self == other)
 
 
-class createExperiment_result(object):
+class updateExperiment_result(object):
     """
     Attributes:
-     - success
      - ire
+     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        None,  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
     )
 
-    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
-        self.success = success
+    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
@@ -26172,12 +27426,7 @@ class createExperiment_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 1:
+            if fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -26185,17 +27434,23 @@ class createExperiment_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
+                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
+                    self.enf.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
                     self.ace = airavata.api.error.ttypes.AiravataClientException()
                     self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
+            elif fid == 4:
                 if ftype == TType.STRUCT:
                     self.ase = airavata.api.error.ttypes.AiravataSystemException()
                     self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 4:
+            elif fid == 5:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -26210,25 +27465,25 @@ class createExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('createExperiment_result')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
-            oprot.writeFieldEnd()
+        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, 2)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 3)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -26249,22 +27504,25 @@ class createExperiment_result(object):
         return not (self == other)
 
 
-class deleteExperiment_args(object):
+class updateExperimentConfiguration_args(object):
     """
     Attributes:
      - authzToken
-     - experimentId
+     - airavataExperimentId
+     - userConfiguration
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'experimentId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'userConfiguration', (airavata.model.experiment.ttypes.UserConfigurationDataModel, airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, experimentId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,):
         self.authzToken = authzToken
-        self.experimentId = experimentId
+        self.airavataExperimentId = airavataExperimentId
+        self.userConfiguration = userConfiguration
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -26283,7 +27541,13 @@ class deleteExperiment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.experimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.userConfiguration = airavata.model.experiment.ttypes.UserConfigurationDataModel()
+                    self.userConfiguration.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -26295,14 +27559,18 @@ class deleteExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteExperiment_args')
+        oprot.writeStructBegin('updateExperimentConfiguration_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.experimentId is not None:
-            oprot.writeFieldBegin('experimentId', TType.STRING, 2)
-            oprot.writeString(self.experimentId.encode('utf-8') if sys.version_info[0] == 2 else self.experimentId)
+        if self.airavataExperimentId is not None:
+            oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
+            oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else 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()
@@ -26310,8 +27578,10 @@ class deleteExperiment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.experimentId is None:
-            raise TProtocolException(message='Required field experimentId is unset!')
+        if self.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
+        if self.userConfiguration is None:
+            raise TProtocolException(message='Required field userConfiguration is unset!')
         return
 
     def __repr__(self):
@@ -26326,29 +27596,18 @@ class deleteExperiment_args(object):
         return not (self == other)
 
 
-class deleteExperiment_result(object):
+class updateExperimentConfiguration_result(object):
     """
     Attributes:
-     - success
-     - ire
-     - ace
-     - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
-        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+        None,  # 0
+        (1, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 1
     )
 
-    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
-        self.success = success
-        self.ire = ire
-        self.ace = ace
-        self.ase = ase
+    def __init__(self, ae=None,):
         self.ae = ae
 
     def read(self, iprot):
@@ -26360,30 +27619,7 @@ class deleteExperiment_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 1:
-                if ftype == TType.STRUCT:
-                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
-                    self.ire.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 2:
-                if ftype == TType.STRUCT:
-                    self.ace = airavata.api.error.ttypes.AiravataClientException()
-                    self.ace.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
-                    self.ase.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
+            if fid == 1:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -26398,25 +27634,9 @@ class deleteExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteExperiment_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.ace is not None:
-            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
-            self.ace.write(oprot)
-            oprot.writeFieldEnd()
-        if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
-            self.ase.write(oprot)
-            oprot.writeFieldEnd()
+        oprot.writeStructBegin('updateExperimentConfiguration_result')
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 1)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -26437,22 +27657,25 @@ class deleteExperiment_result(object):
         return not (self == other)
 
 
-class getExperiment_args(object):
+class updateResourceScheduleing_args(object):
     """
     Attributes:
      - authzToken
      - airavataExperimentId
+     - resourceScheduling
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'resourceScheduling', (airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,):
         self.authzToken = authzToken
         self.airavataExperimentId = airavataExperimentId
+        self.resourceScheduling = resourceScheduling
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -26474,6 +27697,12 @@ class getExperiment_args(object):
                     self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.resourceScheduling = airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+                    self.resourceScheduling.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -26483,7 +27712,7 @@ class getExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperiment_args')
+        oprot.writeStructBegin('updateResourceScheduleing_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -26492,6 +27721,10 @@ class getExperiment_args(object):
             oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
             oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
+        if self.resourceScheduling is not None:
+            oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3)
+            self.resourceScheduling.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -26500,6 +27733,8 @@ class getExperiment_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.airavataExperimentId is None:
             raise TProtocolException(message='Required field airavataExperimentId is unset!')
+        if self.resourceScheduling is None:
+            raise TProtocolException(message='Required field resourceScheduling is unset!')
         return
 
     def __repr__(self):
@@ -26514,32 +27749,18 @@ class getExperiment_args(object):
         return not (self == other)
 
 
-class getExperiment_result(object):
+class updateResourceScheduleing_result(object):
     """
     Attributes:
-     - success
-     - ire
-     - enf
-     - ace
-     - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 0
-        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+        None,  # 0
+        (1, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 1
     )
 
-    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
+    def __init__(self, ae=None,):
         self.ae = ae
 
     def read(self, iprot):
@@ -26551,37 +27772,7 @@ class getExperiment_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
-                    self.success.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 1:
-                if ftype == TType.STRUCT:
-                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
-                    self.ire.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 2:
-                if ftype == TType.STRUCT:
-                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
-                    self.enf.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.ace = airavata.api.error.ttypes.AiravataClientException()
-                    self.ace.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.STRUCT:
-                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
-                    self.ase.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
+            if fid == 1:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -26596,29 +27787,9 @@ class getExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperiment_result')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
-            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()
+        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()
@@ -26639,7 +27810,7 @@ class getExperiment_result(object):
         return not (self == other)
 
 
-class getExperimentByAdmin_args(object):
+class validateExperiment_args(object):
     """
     Attributes:
      - authzToken
@@ -26685,7 +27856,7 @@ class getExperimentByAdmin_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentByAdmin_args')
+        oprot.writeStructBegin('validateExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -26716,7 +27887,7 @@ class getExperimentByAdmin_args(object):
         return not (self == other)
 
 
-class getExperimentByAdmin_result(object):
+class validateExperiment_result(object):
     """
     Attributes:
      - success
@@ -26728,7 +27899,7 @@ class getExperimentByAdmin_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -26754,9 +27925,8 @@ class getExperimentByAdmin_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
-                    self.success.read(iprot)
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -26798,10 +27968,10 @@ class getExperimentByAdmin_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentByAdmin_result')
+        oprot.writeStructBegin('validateExperiment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -26841,22 +28011,25 @@ class getExperimentByAdmin_result(object):
         return not (self == other)
 
 
-class getDetailedExperimentTree_args(object):
+class launchExperiment_args(object):
     """
     Attributes:
      - authzToken
      - airavataExperimentId
+     - gatewayId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
         self.authzToken = authzToken
         self.airavataExperimentId = airavataExperimentId
+        self.gatewayId = gatewayId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -26878,6 +28051,11 @@ class getDetailedExperimentTree_args(object):
                     self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -26887,7 +28065,7 @@ class getDetailedExperimentTree_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getDetailedExperimentTree_args')
+        oprot.writeStructBegin('launchExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -26896,6 +28074,10 @@ class getDetailedExperimentTree_args(object):
             oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
             oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -26904,6 +28086,8 @@ class getDetailedExperimentTree_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.airavataExperimentId is None:
             raise TProtocolException(message='Required field airavataExperimentId is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -26918,10 +28102,9 @@ class getDetailedExperimentTree_args(object):
         return not (self == other)
 
 
-class getDetailedExperimentTree_result(object):
+class launchExperiment_result(object):
     """
     Attributes:
-     - success
      - ire
      - enf
      - ace
@@ -26930,7 +28113,7 @@ class getDetailedExperimentTree_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 0
+        None,  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -26938,8 +28121,7 @@ class getDetailedExperimentTree_result(object):
         (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
     )
 
-    def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,):
-        self.success = success
+    def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
         self.ire = ire
         self.enf = enf
         self.ace = ace
@@ -26955,13 +28137,7 @@ class getDetailedExperimentTree_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
-                    self.success.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 1:
+            if fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -27000,11 +28176,7 @@ class getDetailedExperimentTree_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getDetailedExperimentTree_result')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
-            oprot.writeFieldEnd()
+        oprot.writeStructBegin('launchExperiment_result')
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -27043,25 +28215,22 @@ class getDetailedExperimentTree_result(object):
         return not (self == other)
 
 
-class updateExperiment_args(object):
+class getExperimentStatus_args(object):
     """
     Attributes:
      - authzToken
      - airavataExperimentId
-     - experiment
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'experiment', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None, experiment=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
         self.airavataExperimentId = airavataExperimentId
-        self.experiment = experiment
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -27083,12 +28252,6 @@ class updateExperiment_args(object):
                     self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.experiment = airavata.model.experiment.ttypes.ExperimentModel()
-                    self.experiment.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -27098,7 +28261,7 @@ class updateExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateExperiment_args')
+        oprot.writeStructBegin('getExperimentStatus_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27107,10 +28270,6 @@ class updateExperiment_args(object):
             oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
             oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else 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()
 
@@ -27119,8 +28278,6 @@ class updateExperiment_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.airavataExperimentId is None:
             raise TProtocolException(message='Required field airavataExperimentId is unset!')
-        if self.experiment is None:
-            raise TProtocolException(message='Required field experiment is unset!')
         return
 
     def __repr__(self):
@@ -27135,9 +28292,10 @@ class updateExperiment_args(object):
         return not (self == other)
 
 
-class updateExperiment_result(object):
+class getExperimentStatus_result(object):
     """
     Attributes:
+     - success
      - ire
      - enf
      - ace
@@ -27146,7 +28304,7 @@ class updateExperiment_result(object):
     """
 
     thrift_spec = (
-        None,  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.status.ttypes.ExperimentStatus, airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -27154,7 +28312,8 @@ class updateExperiment_result(object):
         (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, 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
@@ -27170,7 +28329,13 @@ class updateExperiment_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 1:
+            if fid == 0:
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.status.ttypes.ExperimentStatus()
+                    self.success.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -27209,7 +28374,11 @@ class updateExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateExperiment_result')
+        oprot.writeStructBegin('getExperimentStatus_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
+            oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -27248,25 +28417,22 @@ class updateExperiment_result(object):
         return not (self == other)
 
 
-class updateExperimentConfiguration_args(object):
+class getExperimentOutputs_args(object):
     """
     Attributes:
      - authzToken
      - airavataExperimentId
-     - userConfiguration
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'userConfiguration', (airavata.model.experiment.ttypes.UserConfigurationDataModel, 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._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -27288,12 +28454,6 @@ class updateExperimentConfiguration_args(object):
                     self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.userConfiguration = airavata.model.experiment.ttypes.UserConfigurationDataModel()
-                    self.userConfiguration.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -27303,7 +28463,7 @@ class updateExperimentConfiguration_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateExperimentConfiguration_args')
+        oprot.writeStructBegin('getExperimentOutputs_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27312,10 +28472,6 @@ class updateExperimentConfiguration_args(object):
             oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
             oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else 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()
 
@@ -27324,8 +28480,6 @@ class updateExperimentConfiguration_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.airavataExperimentId is None:
             raise TProtocolException(message='Required field airavataExperimentId is unset!')
-        if self.userConfiguration is None:
-            raise TProtocolException(message='Required field userConfiguration is unset!')
         return
 
     def __repr__(self):
@@ -27340,18 +28494,32 @@ class updateExperimentConfiguration_args(object):
         return not (self == other)
 
 
-class updateExperimentConfiguration_result(object):
+class getExperimentOutputs_result(object):
     """
     Attributes:
+     - success
+     - ire
+     - enf
+     - ace
+     - ase
      - ae
     """
 
     thrift_spec = (
-        None,  # 0
-        (1, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 1
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.OutputDataObjectType, airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), False), None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
+        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, 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):
@@ -27363,160 +28531,42 @@ class updateExperimentConfiguration_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 1:
-                if ftype == TType.STRUCT:
-                    self.ae = airavata.api.error.ttypes.AuthorizationException()
-                    self.ae.read(iprot)
+            if fid == 0:
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype109, _size106) = iprot.readListBegin()
+                    for _i110 in range(_size106):
+                        _elem111 = airavata.model.application.io.ttypes.OutputDataObjectType()
+                        _elem111.read(iprot)
+                        self.success.append(_elem111)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
-            else:
-                iprot.skip(ftype)
-            iprot.readFieldEnd()
-        iprot.readStructEnd()
-
-    def write(self, oprot):
-        if oprot._fast_encode is not None and self.thrift_spec is not None:
-            oprot.trans.write(oprot._fast_encode(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 __repr__(self):
-        L = ['%s=%r' % (key, value)
-             for key, value in self.__dict__.items()]
-        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(object):
-    """
-    Attributes:
-     - authzToken
-     - airavataExperimentId
-     - resourceScheduling
-    """
-
-    thrift_spec = (
-        None,  # 0
-        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'resourceScheduling', (airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, 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._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
-            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
-            return
-        iprot.readStructBegin()
-        while True:
-            (fname, ftype, fid) = iprot.readFieldBegin()
-            if ftype == TType.STOP:
-                break
-            if fid == 1:
+            elif fid == 1:
                 if ftype == TType.STRUCT:
-                    self.authzToken = airavata.model.security.ttypes.AuthzToken()
-                    self.authzToken.read(iprot)
+                    self.ire = airavata.api.error.ttypes.InvalidRequestException()
+                    self.ire.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
-                if ftype == TType.STRING:
-                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.STRUCT:
+                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
+                    self.enf.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.resourceScheduling = airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
-                    self.resourceScheduling.read(iprot)
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            else:
-                iprot.skip(ftype)
-            iprot.readFieldEnd()
-        iprot.readStructEnd()
-
-    def write(self, oprot):
-        if oprot._fast_encode is not None and self.thrift_spec is not None:
-            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
-            return
-        oprot.writeStructBegin('updateResourceScheduleing_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.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
-            oprot.writeFieldEnd()
-        if self.resourceScheduling is not None:
-            oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3)
-            self.resourceScheduling.write(oprot)
-            oprot.writeFieldEnd()
-        oprot.writeFieldStop()
-        oprot.writeStructEnd()
-
-    def validate(self):
-        if self.authzToken is None:
-            raise TProtocolException(message='Required field authzToken is unset!')
-        if self.airavataExperimentId is None:
-            raise TProtocolException(message='Required field airavataExperimentId is unset!')
-        if self.resourceScheduling is None:
-            raise TProtocolException(message='Required field resourceScheduling is unset!')
-        return
-
-    def __repr__(self):
-        L = ['%s=%r' % (key, value)
-             for key, value in self.__dict__.items()]
-        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_result(object):
-    """
-    Attributes:
-     - ae
-    """
-
-    thrift_spec = (
-        None,  # 0
-        (1, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 1
-    )
-
-    def __init__(self, ae=None,):
-        self.ae = ae
-
-    def read(self, iprot):
-        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
-            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
-            return
-        iprot.readStructBegin()
-        while True:
-            (fname, ftype, fid) = iprot.readFieldBegin()
-            if ftype == TType.STOP:
-                break
-            if fid == 1:
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -27531,9 +28581,32 @@ class updateResourceScheduleing_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateResourceScheduleing_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 iter112 in self.success:
+                iter112.write(oprot)
+            oprot.writeListEnd()
+            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()
@@ -27554,7 +28627,7 @@ class updateResourceScheduleing_result(object):
         return not (self == other)
 
 
-class validateExperiment_args(object):
+class getIntermediateOutputs_args(object):
     """
     Attributes:
      - authzToken
@@ -27600,7 +28673,7 @@ class validateExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('validateExperiment_args')
+        oprot.writeStructBegin('getIntermediateOutputs_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27631,7 +28704,7 @@ class validateExperiment_args(object):
         return not (self == other)
 
 
-class validateExperiment_result(object):
+class getIntermediateOutputs_result(object):
     """
     Attributes:
      - success
@@ -27643,7 +28716,7 @@ class validateExperiment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.OutputDataObjectType, airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -27669,8 +28742,14 @@ class validateExperiment_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype116, _size113) = iprot.readListBegin()
+                    for _i117 in range(_size113):
+                        _elem118 = airavata.model.application.io.ttypes.OutputDataObjectType()
+                        _elem118.read(iprot)
+                        self.success.append(_elem118)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -27712,10 +28791,13 @@ class validateExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('validateExperiment_result')
+        oprot.writeStructBegin('getIntermediateOutputs_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter119 in self.success:
+                iter119.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -27755,211 +28837,7 @@ class validateExperiment_result(object):
         return not (self == other)
 
 
-class launchExperiment_args(object):
-    """
-    Attributes:
-     - authzToken
-     - airavataExperimentId
-     - gatewayId
-    """
-
-    thrift_spec = (
-        None,  # 0
-        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
-    )
-
-    def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
-        self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
-        self.gatewayId = gatewayId
-
-    def read(self, iprot):
-        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
-            iprot._fast_decode(self, iprot, (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 = airavata.model.security.ttypes.AuthzToken()
-                    self.authzToken.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 2:
-                if ftype == TType.STRING:
-                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            else:
-                iprot.skip(ftype)
-            iprot.readFieldEnd()
-        iprot.readStructEnd()
-
-    def write(self, oprot):
-        if oprot._fast_encode is not None and self.thrift_spec is not None:
-            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
-            return
-        oprot.writeStructBegin('launchExperiment_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.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
-            oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
-            oprot.writeFieldEnd()
-        oprot.writeFieldStop()
-        oprot.writeStructEnd()
-
-    def validate(self):
-        if self.authzToken is None:
-            raise TProtocolException(message='Required field authzToken is unset!')
-        if self.airavataExperimentId is None:
-            raise TProtocolException(message='Required field airavataExperimentId is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        return
-
-    def __repr__(self):
-        L = ['%s=%r' % (key, value)
-             for key, value in self.__dict__.items()]
-        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 launchExperiment_result(object):
-    """
-    Attributes:
-     - ire
-     - enf
-     - ace
-     - ase
-     - ae
-    """
-
-    thrift_spec = (
-        None,  # 0
-        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, 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._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
-            iprot._fast_decode(self, iprot, (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 = airavata.api.error.ttypes.InvalidRequestException()
-                    self.ire.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 2:
-                if ftype == TType.STRUCT:
-                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
-                    self.enf.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.ace = airavata.api.error.ttypes.AiravataClientException()
-                    self.ace.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.STRUCT:
-                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
-                    self.ase.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 5:
-                if ftype == TType.STRUCT:
-                    self.ae = 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._fast_encode is not None and self.thrift_spec is not None:
-            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
-            return
-        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, 5)
-            self.ae.write(oprot)
-            oprot.writeFieldEnd()
-        oprot.writeFieldStop()
-        oprot.writeStructEnd()
-
-    def validate(self):
-        return
-
-    def __repr__(self):
-        L = ['%s=%r' % (key, value)
-             for key, value in self.__dict__.items()]
-        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 getExperimentStatus_args(object):
+class getJobStatuses_args(object):
     """
     Attributes:
      - authzToken
@@ -28005,7 +28883,7 @@ class getExperimentStatus_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentStatus_args')
+        oprot.writeStructBegin('getJobStatuses_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -28036,7 +28914,7 @@ class getExperimentStatus_args(object):
         return not (self == other)
 
 
-class getExperimentStatus_result(object):
+class getJobStatuses_result(object):
     """
     Attributes:
      - success
@@ -28048,7 +28926,7 @@ class getExperimentStatus_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.status.ttypes.ExperimentStatus, airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ),  # 0
+        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRUCT, (airavata.model.status.ttypes.JobStatus, airavata.model.status.ttypes.JobStatus.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -28074,9 +28952,15 @@ class getExperimentStatus_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.status.ttypes.ExperimentStatus()
-                    self.success.read(iprot)
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype121, _vtype122, _size120) = iprot.readMapBegin()
+                    for _i124 in range(_size120):
+                        _key125 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val126 = airavata.model.status.ttypes.JobStatus()
+                        _val126.read(iprot)
+                        self.success[_key125] = _val126
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -28118,10 +29002,14 @@ class getExperimentStatus_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentStatus_result')
+        oprot.writeStructBegin('getJobStatuses_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
+            oprot.writeFieldBegin('success', TType.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
+            for kiter127, viter128 in self.success.items():
+                oprot.writeString(kiter127.encode('utf-8') if sys.version_info[0] == 2 else kiter127)
+                viter128.write(oprot)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -28161,7 +29049,7 @@ class getExperimentStatus_result(object):
         return not (self == other)
 
 
-class getExperimentOutputs_args(object):
+class getJobDetails_args(object):
     """
     Attributes:
      - authzToken
@@ -28207,7 +29095,7 @@ class getExperimentOutputs_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentOutputs_args')
+        oprot.writeStructBegin('getJobDetails_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -28238,7 +29126,7 @@ class getExperimentOutputs_args(object):
         return not (self == other)
 
 
-class getExperimentOutputs_result(object):
+class getJobDetails_result(object):
     """
     Attributes:
      - success
@@ -28250,7 +29138,7 @@ class getExperimentOutputs_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.OutputDataObjectType, airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), False), None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.job.ttypes.JobModel, airavata.model.job.ttypes.JobModel.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -28278,11 +29166,11 @@ class getExperimentOutputs_result(object):
             if fid == 0:
                 if ftype == TType.LIST:
                     self.success = []
-                    (_etype109, _size106) = iprot.readListBegin()
-                    for _i110 in range(_size106):
-                        _elem111 = airavata.model.application.io.ttypes.OutputDataObjectType()
-                        _elem111.read(iprot)
-                        self.success.append(_elem111)
+                    (_etype132, _size129) = iprot.readListBegin()
+                    for _i133 in range(_size129):
+                        _elem134 = airavata.model.job.ttypes.JobModel()
+                        _elem134.read(iprot)
+                        self.success.append(_elem134)
                     iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
@@ -28325,12 +29213,12 @@ class getExperimentOutputs_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getExperimentOutputs_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 iter112 in self.success:
-                iter112.write(oprot)
+            for iter135 in self.success:
+                iter135.write(oprot)
             oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
@@ -28371,22 +29259,28 @@ class getExperimentOutputs_result(object):
         return not (self == other)
 
 
-class getIntermediateOutputs_args(object):
+class cloneExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
+     - existingExperimentID
+     - newExperimentName
+     - newExperimentProjectId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'existingExperimentID', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'newExperimentName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'newExperimentProjectId', 'UTF8', None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
+        self.existingExperimentID = existingExperimentID
+        self.newExperimentName = newExperimentName
+        self.newExperimentProjectId = newExperimentProjectId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -28405,7 +29299,17 @@ class getIntermediateOutputs_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.existingExperimentID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.newExperimentName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.newExperimentProjectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -28417,14 +29321,22 @@ class getIntermediateOutputs_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getIntermediateOutputs_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.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
+        if self.existingExperimentID is not None:
+            oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2)
+            oprot.writeString(self.existingExperimentID.encode('utf-8') if sys.version_info[0] == 2 else self.existingExperimentID)
+            oprot.writeFieldEnd()
+        if self.newExperimentName is not None:
+            oprot.writeFieldBegin('newExperimentName', TType.STRING, 3)
+            oprot.writeString(self.newExperimentName.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentName)
+            oprot.writeFieldEnd()
+        if self.newExperimentProjectId is not None:
+            oprot.writeFieldBegin('newExperimentProjectId', TType.STRING, 4)
+            oprot.writeString(self.newExperimentProjectId.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentProjectId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -28432,8 +29344,6 @@ class getIntermediateOutputs_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.airavataExperimentId is None:
-            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -28448,7 +29358,7 @@ class getIntermediateOutputs_args(object):
         return not (self == other)
 
 
-class getIntermediateOutputs_result(object):
+class cloneExperiment_result(object):
     """
     Attributes:
      - success
@@ -28457,24 +29367,27 @@ class getIntermediateOutputs_result(object):
      - ace
      - ase
      - ae
+     - pnfe
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.OutputDataObjectType, airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
         (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
         (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+        (6, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 6
     )
 
-    def __init__(self, success=None, 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, pnfe=None,):
         self.success = success
         self.ire = ire
         self.enf = enf
         self.ace = ace
         self.ase = ase
         self.ae = ae
+        self.pnfe = pnfe
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -28486,14 +29399,8 @@ class getIntermediateOutputs_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype116, _size113) = iprot.readListBegin()
-                    for _i117 in range(_size113):
-                        _elem118 = airavata.model.application.io.ttypes.OutputDataObjectType()
-                        _elem118.read(iprot)
-                        self.success.append(_elem118)
-                    iprot.readListEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -28526,6 +29433,12 @@ class getIntermediateOutputs_result(object):
                     self.ae.read(iprot)
                 else:
                     iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.STRUCT:
+                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
+                    self.pnfe.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -28535,13 +29448,10 @@ class getIntermediateOutputs_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getIntermediateOutputs_result')
+        oprot.writeStructBegin('cloneExperiment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter119 in self.success:
-                iter119.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -28563,6 +29473,10 @@ class getIntermediateOutputs_result(object):
             oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 6)
+            self.pnfe.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -28581,22 +29495,28 @@ class getIntermediateOutputs_result(object):
         return not (self == other)
 
 
-class getJobStatuses_args(object):
+class cloneExperimentByAdmin_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
+     - existingExperimentID
+     - newExperimentName
+     - newExperimentProjectId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'existingExperimentID', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'newExperimentName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'newExperimentProjectId', 'UTF8', None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
+        self.existingExperimentID = existingExperimentID
+        self.newExperimentName = newExperimentName
+        self.newExperimentProjectId = newExperimentProjectId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -28615,7 +29535,17 @@ class getJobStatuses_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.existingExperimentID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.newExperimentName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.newExperimentProjectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -28627,14 +29557,22 @@ class getJobStatuses_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getJobStatuses_args')
+        oprot.writeStructBegin('cloneExperimentByAdmin_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.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
+        if self.existingExperimentID is not None:
+            oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2)
+            oprot.writeString(self.existingExperimentID.encode('utf-8') if sys.version_info[0] == 2 else self.existingExperimentID)
+            oprot.writeFieldEnd()
+        if self.newExperimentName is not None:
+            oprot.writeFieldBegin('newExperimentName', TType.STRING, 3)
+            oprot.writeString(self.newExperimentName.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentName)
+            oprot.writeFieldEnd()
+        if self.newExperimentProjectId is not None:
+            oprot.writeFieldBegin('newExperimentProjectId', TType.STRING, 4)
+            oprot.writeString(self.newExperimentProjectId.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentProjectId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -28642,8 +29580,6 @@ class getJobStatuses_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.airavataExperimentId is None:
-            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -28658,7 +29594,7 @@ class getJobStatuses_args(object):
         return not (self == other)
 
 
-class getJobStatuses_result(object):
+class cloneExperimentByAdmin_result(object):
     """
     Attributes:
      - success
@@ -28667,24 +29603,27 @@ class getJobStatuses_result(object):
      - ace
      - ase
      - ae
+     - pnfe
     """
 
     thrift_spec = (
-        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRUCT, (airavata.model.status.ttypes.JobStatus, airavata.model.status.ttypes.JobStatus.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
         (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
         (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+        (6, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 6
     )
 
-    def __init__(self, success=None, 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, pnfe=None,):
         self.success = success
         self.ire = ire
         self.enf = enf
         self.ace = ace
         self.ase = ase
         self.ae = ae
+        self.pnfe = pnfe
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -28696,15 +29635,8 @@ class getJobStatuses_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype121, _vtype122, _size120) = iprot.readMapBegin()
-                    for _i124 in range(_size120):
-                        _key125 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val126 = airavata.model.status.ttypes.JobStatus()
-                        _val126.read(iprot)
-                        self.success[_key125] = _val126
-                    iprot.readMapEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -28737,6 +29669,12 @@ class getJobStatuses_result(object):
                     self.ae.read(iprot)
                 else:
                     iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.STRUCT:
+                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
+                    self.pnfe.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -28746,14 +29684,10 @@ class getJobStatuses_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getJobStatuses_result')
+        oprot.writeStructBegin('cloneExperimentByAdmin_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
-            for kiter127, viter128 in self.success.items():
-                oprot.writeString(kiter127.encode('utf-8') if sys.version_info[0] == 2 else kiter127)
-                viter128.write(oprot)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -28775,6 +29709,10 @@ class getJobStatuses_result(object):
             oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 6)
+            self.pnfe.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -28793,22 +29731,25 @@ class getJobStatuses_result(object):
         return not (self == other)
 
 
-class getJobDetails_args(object):
+class terminateExperiment_args(object):
     """
     Attributes:
      - authzToken
      - airavataExperimentId
+     - gatewayId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
         self.authzToken = authzToken
         self.airavataExperimentId = airavataExperimentId
+        self.gatewayId = gatewayId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -28830,6 +29771,11 @@ class getJobDetails_args(object):
                     self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -28839,7 +29785,7 @@ class getJobDetails_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getJobDetails_args')
+        oprot.writeStructBegin('terminateExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -28848,14 +29794,16 @@ class getJobDetails_args(object):
             oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2)
             oprot.writeString(self.airavataExperimentId.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
             oprot.writeFieldEnd()
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.airavataExperimentId is None:
-            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -28870,10 +29818,9 @@ class getJobDetails_args(object):
         return not (self == other)
 
 
-class getJobDetails_result(object):
+class terminateExperiment_result(object):
     """
     Attributes:
-     - success
      - ire
      - enf
      - ace
@@ -28882,7 +29829,7 @@ class getJobDetails_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.job.ttypes.JobModel, airavata.model.job.ttypes.JobModel.thrift_spec), False), None, ),  # 0
+        None,  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
@@ -28890,8 +29837,7 @@ class getJobDetails_result(object):
         (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
     )
 
-    def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,):
-        self.success = success
+    def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
         self.ire = ire
         self.enf = enf
         self.ace = ace
@@ -28907,18 +29853,7 @@ class getJobDetails_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype132, _size129) = iprot.readListBegin()
-                    for _i133 in range(_size129):
-                        _elem134 = airavata.model.job.ttypes.JobModel()
-                        _elem134.read(iprot)
-                        self.success.append(_elem134)
-                    iprot.readListEnd()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 1:
+            if fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -28957,14 +29892,7 @@ class getJobDetails_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getJobDetails_result')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter135 in self.success:
-                iter135.write(oprot)
-            oprot.writeListEnd()
-            oprot.writeFieldEnd()
+        oprot.writeStructBegin('terminateExperiment_result')
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -29003,28 +29931,25 @@ class getJobDetails_result(object):
         return not (self == other)
 
 
-class cloneExperiment_args(object):
+class registerApplicationModule_args(object):
     """
     Attributes:
      - authzToken
-     - existingExperimentID
-     - newExperimentName
-     - newExperimentProjectId
+     - gatewayId
+     - applicationModule
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'existingExperimentID', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'newExperimentName', 'UTF8', None, ),  # 3
-        (4, TType.STRING, 'newExperimentProjectId', 'UTF8', None, ),  # 4
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'applicationModule', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, applicationModule=None,):
         self.authzToken = authzToken
-        self.existingExperimentID = existingExperimentID
-        self.newExperimentName = newExperimentName
-        self.newExperimentProjectId = newExperimentProjectId
+        self.gatewayId = gatewayId
+        self.applicationModule = applicationModule
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29043,17 +29968,13 @@ class cloneExperiment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.existingExperimentID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRING:
-                    self.newExperimentName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.STRING:
-                    self.newExperimentProjectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.STRUCT:
+                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                    self.applicationModule.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -29065,22 +29986,18 @@ class cloneExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('cloneExperiment_args')
+        oprot.writeStructBegin('registerApplicationModule_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.existingExperimentID is not None:
-            oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2)
-            oprot.writeString(self.existingExperimentID.encode('utf-8') if sys.version_info[0] == 2 else self.existingExperimentID)
-            oprot.writeFieldEnd()
-        if self.newExperimentName is not None:
-            oprot.writeFieldBegin('newExperimentName', TType.STRING, 3)
-            oprot.writeString(self.newExperimentName.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentName)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.newExperimentProjectId is not None:
-            oprot.writeFieldBegin('newExperimentProjectId', TType.STRING, 4)
-            oprot.writeString(self.newExperimentProjectId.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentProjectId)
+        if self.applicationModule is not None:
+            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
+            self.applicationModule.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -29088,6 +30005,10 @@ class cloneExperiment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.applicationModule is None:
+            raise TProtocolException(message='Required field applicationModule is unset!')
         return
 
     def __repr__(self):
@@ -29102,36 +30023,30 @@ class cloneExperiment_args(object):
         return not (self == other)
 
 
-class cloneExperiment_result(object):
+class registerApplicationModule_result(object):
     """
     Attributes:
      - success
      - ire
-     - enf
      - ace
      - ase
      - ae
-     - pnfe
     """
 
     thrift_spec = (
         (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
-        (6, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 6
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None, pnfe=None,):
+    def __init__(self, success=None, ire=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
-        self.pnfe = pnfe
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29155,34 +30070,22 @@ class cloneExperiment_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
-                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
-                    self.enf.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
                     self.ace = airavata.api.error.ttypes.AiravataClientException()
                     self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 4:
+            elif fid == 3:
                 if ftype == TType.STRUCT:
                     self.ase = airavata.api.error.ttypes.AiravataSystemException()
                     self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 5:
+            elif fid == 4:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 6:
-                if ftype == TType.STRUCT:
-                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
-                    self.pnfe.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -29192,7 +30095,7 @@ class cloneExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('cloneExperiment_result')
+        oprot.writeStructBegin('registerApplicationModule_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRING, 0)
             oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
@@ -29201,26 +30104,18 @@ class cloneExperiment_result(object):
             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)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
-        if self.pnfe is not None:
-            oprot.writeFieldBegin('pnfe', TType.STRUCT, 6)
-            self.pnfe.write(oprot)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -29239,28 +30134,22 @@ class cloneExperiment_result(object):
         return not (self == other)
 
 
-class cloneExperimentByAdmin_args(object):
+class getApplicationModule_args(object):
     """
     Attributes:
      - authzToken
-     - existingExperimentID
-     - newExperimentName
-     - newExperimentProjectId
+     - appModuleId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'existingExperimentID', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'newExperimentName', 'UTF8', None, ),  # 3
-        (4, TType.STRING, 'newExperimentProjectId', 'UTF8', None, ),  # 4
+        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
+    def __init__(self, authzToken=None, appModuleId=None,):
         self.authzToken = authzToken
-        self.existingExperimentID = existingExperimentID
-        self.newExperimentName = newExperimentName
-        self.newExperimentProjectId = newExperimentProjectId
+        self.appModuleId = appModuleId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29279,17 +30168,7 @@ class cloneExperimentByAdmin_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.existingExperimentID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.newExperimentName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.STRING:
-                    self.newExperimentProjectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -29301,22 +30180,14 @@ class cloneExperimentByAdmin_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('cloneExperimentByAdmin_args')
+        oprot.writeStructBegin('getApplicationModule_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.existingExperimentID is not None:
-            oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2)
-            oprot.writeString(self.existingExperimentID.encode('utf-8') if sys.version_info[0] == 2 else self.existingExperimentID)
-            oprot.writeFieldEnd()
-        if self.newExperimentName is not None:
-            oprot.writeFieldBegin('newExperimentName', TType.STRING, 3)
-            oprot.writeString(self.newExperimentName.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentName)
-            oprot.writeFieldEnd()
-        if self.newExperimentProjectId is not None:
-            oprot.writeFieldBegin('newExperimentProjectId', TType.STRING, 4)
-            oprot.writeString(self.newExperimentProjectId.encode('utf-8') if sys.version_info[0] == 2 else self.newExperimentProjectId)
+        if self.appModuleId is not None:
+            oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
+            oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -29324,6 +30195,8 @@ class cloneExperimentByAdmin_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.appModuleId is None:
+            raise TProtocolException(message='Required field appModuleId is unset!')
         return
 
     def __repr__(self):
@@ -29338,36 +30211,30 @@ class cloneExperimentByAdmin_args(object):
         return not (self == other)
 
 
-class cloneExperimentByAdmin_result(object):
+class getApplicationModule_result(object):
     """
     Attributes:
      - success
      - ire
-     - enf
      - ace
      - ase
      - ae
-     - pnfe
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
-        (6, TType.STRUCT, 'pnfe', (airavata.api.error.ttypes.ProjectNotFoundException, airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ),  # 6
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None, pnfe=None,):
+    def __init__(self, success=None, ire=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
-        self.pnfe = pnfe
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29379,8 +30246,9 @@ class cloneExperimentByAdmin_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -29391,34 +30259,22 @@ class cloneExperimentByAdmin_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
-                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
-                    self.enf.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
                     self.ace = airavata.api.error.ttypes.AiravataClientException()
                     self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 4:
+            elif fid == 3:
                 if ftype == TType.STRUCT:
                     self.ase = airavata.api.error.ttypes.AiravataSystemException()
                     self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 5:
+            elif fid == 4:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 6:
-                if ftype == TType.STRUCT:
-                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
-                    self.pnfe.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -29428,35 +30284,27 @@ class cloneExperimentByAdmin_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('cloneExperimentByAdmin_result')
+        oprot.writeStructBegin('getApplicationModule_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else 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)
             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)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
-        if self.pnfe is not None:
-            oprot.writeFieldBegin('pnfe', TType.STRUCT, 6)
-            self.pnfe.write(oprot)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -29475,25 +30323,25 @@ class cloneExperimentByAdmin_result(object):
         return not (self == other)
 
 
-class terminateExperiment_args(object):
+class updateApplicationModule_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
-     - gatewayId
+     - appModuleId
+     - applicationModule
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
+        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'applicationModule', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
+    def __init__(self, authzToken=None, appModuleId=None, applicationModule=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
-        self.gatewayId = gatewayId
+        self.appModuleId = appModuleId
+        self.applicationModule = applicationModule
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29512,12 +30360,13 @@ class terminateExperiment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.STRUCT:
+                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                    self.applicationModule.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -29529,18 +30378,18 @@ class terminateExperiment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('terminateExperiment_args')
+        oprot.writeStructBegin('updateApplicationModule_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.encode('utf-8') if sys.version_info[0] == 2 else self.airavataExperimentId)
+        if self.appModuleId is not None:
+            oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
+            oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+        if self.applicationModule is not None:
+            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
+            self.applicationModule.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -29548,6 +30397,10 @@ class terminateExperiment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.appModuleId is None:
+            raise TProtocolException(message='Required field appModuleId is unset!')
+        if self.applicationModule is None:
+            raise TProtocolException(message='Required field applicationModule is unset!')
         return
 
     def __repr__(self):
@@ -29562,28 +30415,27 @@ class terminateExperiment_args(object):
         return not (self == other)
 
 
-class terminateExperiment_result(object):
+class updateApplicationModule_result(object):
     """
     Attributes:
+     - success
      - ire
-     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        None,  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'enf', (airavata.api.error.ttypes.ExperimentNotFoundException, airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ),  # 2
-        (3, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 3
-        (4, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 4
-        (5, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 5
+        (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,):
+    def __init__(self, success=None, ire=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
@@ -29597,7 +30449,12 @@ class terminateExperiment_result(object):
             (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 = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -29605,23 +30462,17 @@ class terminateExperiment_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
-                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
-                    self.enf.read(iprot)
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
                     self.ace = airavata.api.error.ttypes.AiravataClientException()
                     self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 4:
+            elif fid == 3:
                 if ftype == TType.STRUCT:
                     self.ase = airavata.api.error.ttypes.AiravataSystemException()
                     self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 5:
+            elif fid == 4:
                 if ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -29636,25 +30487,25 @@ class terminateExperiment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('terminateExperiment_result')
+        oprot.writeStructBegin('updateApplicationModule_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)
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
             self.ace.write(oprot)
             oprot.writeFieldEnd()
         if self.ase is not None:
-            oprot.writeFieldBegin('ase', TType.STRUCT, 4)
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
             self.ase.write(oprot)
             oprot.writeFieldEnd()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -29675,25 +30526,22 @@ class terminateExperiment_result(object):
         return not (self == other)
 
 
-class registerApplicationModule_args(object):
+class getAllAppModules_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
-     - applicationModule
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'applicationModule', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, applicationModule=None,):
+    def __init__(self, authzToken=None, gatewayId=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
-        self.applicationModule = applicationModule
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29715,12 +30563,6 @@ class registerApplicationModule_args(object):
                     self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                    self.applicationModule.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -29730,7 +30572,7 @@ class registerApplicationModule_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerApplicationModule_args')
+        oprot.writeStructBegin('getAllAppModules_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -29739,10 +30581,6 @@ class registerApplicationModule_args(object):
             oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.applicationModule is not None:
-            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
-            self.applicationModule.write(oprot)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -29751,8 +30589,6 @@ class registerApplicationModule_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.applicationModule is None:
-            raise TProtocolException(message='Required field applicationModule is unset!')
         return
 
     def __repr__(self):
@@ -29767,7 +30603,7 @@ class registerApplicationModule_args(object):
         return not (self == other)
 
 
-class registerApplicationModule_result(object):
+class getAllAppModules_result(object):
     """
     Attributes:
      - success
@@ -29778,7 +30614,7 @@ class registerApplicationModule_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -29802,8 +30638,14 @@ class registerApplicationModule_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype139, _size136) = iprot.readListBegin()
+                    for _i140 in range(_size136):
+                        _elem141 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                        _elem141.read(iprot)
+                        self.success.append(_elem141)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -29839,10 +30681,13 @@ class registerApplicationModule_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerApplicationModule_result')
+        oprot.writeStructBegin('getAllAppModules_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter142 in self.success:
+                iter142.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -29878,22 +30723,25 @@ class registerApplicationModule_result(object):
         return not (self == other)
 
 
-class getApplicationModule_args(object):
+class getAccessibleAppModules_args(object):
     """
     Attributes:
      - authzToken
-     - appModuleId
+     - gatewayId
+     - permissionType
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.I32, 'permissionType', None, None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, appModuleId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, permissionType=None,):
         self.authzToken = authzToken
-        self.appModuleId = appModuleId
+        self.gatewayId = gatewayId
+        self.permissionType = permissionType
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -29912,7 +30760,12 @@ class getApplicationModule_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I32:
+                    self.permissionType = iprot.readI32()
                 else:
                     iprot.skip(ftype)
             else:
@@ -29924,14 +30777,18 @@ class getApplicationModule_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationModule_args')
+        oprot.writeStructBegin('getAccessibleAppModules_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appModuleId is not None:
-            oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
-            oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.permissionType is not None:
+            oprot.writeFieldBegin('permissionType', TType.I32, 3)
+            oprot.writeI32(self.permissionType)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -29939,8 +30796,10 @@ class getApplicationModule_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appModuleId is None:
-            raise TProtocolException(message='Required field appModuleId is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.permissionType is None:
+            raise TProtocolException(message='Required field permissionType is unset!')
         return
 
     def __repr__(self):
@@ -29955,7 +30814,7 @@ class getApplicationModule_args(object):
         return not (self == other)
 
 
-class getApplicationModule_result(object):
+class getAccessibleAppModules_result(object):
     """
     Attributes:
      - success
@@ -29966,7 +30825,7 @@ class getApplicationModule_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -29990,9 +30849,14 @@ class getApplicationModule_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                    self.success.read(iprot)
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype146, _size143) = iprot.readListBegin()
+                    for _i147 in range(_size143):
+                        _elem148 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                        _elem148.read(iprot)
+                        self.success.append(_elem148)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -30028,10 +30892,13 @@ class getApplicationModule_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationModule_result')
+        oprot.writeStructBegin('getAccessibleAppModules_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 iter149 in self.success:
+                iter149.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -30067,25 +30934,22 @@ class getApplicationModule_result(object):
         return not (self == other)
 
 
-class updateApplicationModule_args(object):
+class deleteApplicationModule_args(object):
     """
     Attributes:
      - authzToken
      - appModuleId
-     - applicationModule
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'applicationModule', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, appModuleId=None, applicationModule=None,):
+    def __init__(self, authzToken=None, appModuleId=None,):
         self.authzToken = authzToken
         self.appModuleId = appModuleId
-        self.applicationModule = applicationModule
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -30107,12 +30971,6 @@ class updateApplicationModule_args(object):
                     self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                    self.applicationModule.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -30122,7 +30980,7 @@ class updateApplicationModule_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateApplicationModule_args')
+        oprot.writeStructBegin('deleteApplicationModule_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -30131,10 +30989,6 @@ class updateApplicationModule_args(object):
             oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
             oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
             oprot.writeFieldEnd()
-        if self.applicationModule is not None:
-            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
-            self.applicationModule.write(oprot)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -30143,8 +30997,6 @@ class updateApplicationModule_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.appModuleId is None:
             raise TProtocolException(message='Required field appModuleId is unset!')
-        if self.applicationModule is None:
-            raise TProtocolException(message='Required field applicationModule is unset!')
         return
 
     def __repr__(self):
@@ -30159,7 +31011,7 @@ class updateApplicationModule_args(object):
         return not (self == other)
 
 
-class updateApplicationModule_result(object):
+class deleteApplicationModule_result(object):
     """
     Attributes:
      - success
@@ -30231,7 +31083,7 @@ class updateApplicationModule_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateApplicationModule_result')
+        oprot.writeStructBegin('deleteApplicationModule_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -30270,22 +31122,25 @@ class updateApplicationModule_result(object):
         return not (self == other)
 
 
-class getAllAppModules_args(object):
+class registerApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
+     - applicationDeployment
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'applicationDeployment', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, applicationDeployment=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
+        self.applicationDeployment = applicationDeployment
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -30307,6 +31162,12 @@ class getAllAppModules_args(object):
                     self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                    self.applicationDeployment.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -30316,7 +31177,7 @@ class getAllAppModules_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllAppModules_args')
+        oprot.writeStructBegin('registerApplicationDeployment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -30325,6 +31186,10 @@ class getAllAppModules_args(object):
             oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
+        if self.applicationDeployment is not None:
+            oprot.writeFieldBegin('applicationDeployment', TType.STRUCT, 3)
+            self.applicationDeployment.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -30333,6 +31198,8 @@ class getAllAppModules_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.applicationDeployment is None:
+            raise TProtocolException(message='Required field applicationDeployment is unset!')
         return
 
     def __repr__(self):
@@ -30347,7 +31214,7 @@ class getAllAppModules_args(object):
         return not (self == other)
 
 
-class getAllAppModules_result(object):
+class registerApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -30358,7 +31225,7 @@ class getAllAppModules_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -30382,14 +31249,8 @@ class getAllAppModules_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype139, _size136) = iprot.readListBegin()
-                    for _i140 in range(_size136):
-                        _elem141 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                        _elem141.read(iprot)
-                        self.success.append(_elem141)
-                    iprot.readListEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -30425,13 +31286,10 @@ class getAllAppModules_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllAppModules_result')
+        oprot.writeStructBegin('registerApplicationDeployment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter142 in self.success:
-                iter142.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -30467,25 +31325,22 @@ class getAllAppModules_result(object):
         return not (self == other)
 
 
-class getAccessibleAppModules_args(object):
+class getApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - permissionType
+     - appDeploymentId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.I32, 'permissionType', None, None, ),  # 3
+        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, permissionType=None,):
+    def __init__(self, authzToken=None, appDeploymentId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.permissionType = permissionType
+        self.appDeploymentId = appDeploymentId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -30504,12 +31359,7 @@ class getAccessibleAppModules_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.I32:
-                    self.permissionType = iprot.readI32()
+                    self.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -30521,18 +31371,14 @@ class getAccessibleAppModules_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAccessibleAppModules_args')
+        oprot.writeStructBegin('getApplicationDeployment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
-            oprot.writeFieldEnd()
-        if self.permissionType is not None:
-            oprot.writeFieldBegin('permissionType', TType.I32, 3)
-            oprot.writeI32(self.permissionType)
+        if self.appDeploymentId is not None:
+            oprot.writeFieldBegin('appDeploymentId', TType.STRING, 2)
+            oprot.writeString(self.appDeploymentId.encode('utf-8') if sys.version_info[0] == 2 else self.appDeploymentId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -30540,10 +31386,8 @@ class getAccessibleAppModules_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.permissionType is None:
-            raise TProtocolException(message='Required field permissionType is unset!')
+        if self.appDeploymentId is None:
+            raise TProtocolException(message='Required field appDeploymentId is unset!')
         return
 
     def __repr__(self):
@@ -30558,7 +31402,7 @@ class getAccessibleAppModules_args(object):
         return not (self == other)
 
 
-class getAccessibleAppModules_result(object):
+class getApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -30569,7 +31413,7 @@ class getAccessibleAppModules_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), False), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -30593,14 +31437,9 @@ class getAccessibleAppModules_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype146, _size143) = iprot.readListBegin()
-                    for _i147 in range(_size143):
-                        _elem148 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                        _elem148.read(iprot)
-                        self.success.append(_elem148)
-                    iprot.readListEnd()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -30636,13 +31475,10 @@ class getAccessibleAppModules_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAccessibleAppModules_result')
+        oprot.writeStructBegin('getApplicationDeployment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter149 in self.success:
-                iter149.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -30678,22 +31514,25 @@ class getAccessibleAppModules_result(object):
         return not (self == other)
 
 
-class deleteApplicationModule_args(object):
+class updateApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
-     - appModuleId
+     - appDeploymentId
+     - applicationDeployment
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'applicationDeployment', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, appModuleId=None,):
+    def __init__(self, authzToken=None, appDeploymentId=None, applicationDeployment=None,):
         self.authzToken = authzToken
-        self.appModuleId = appModuleId
+        self.appDeploymentId = appDeploymentId
+        self.applicationDeployment = applicationDeployment
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -30712,7 +31551,13 @@ class deleteApplicationModule_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                    self.applicationDeployment.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -30724,14 +31569,18 @@ class deleteApplicationModule_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteApplicationModule_args')
+        oprot.writeStructBegin('updateApplicationDeployment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appModuleId is not None:
-            oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
-            oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
+        if self.appDeploymentId is not None:
+            oprot.writeFieldBegin('appDeploymentId', TType.STRING, 2)
+            oprot.writeString(self.appDeploymentId.encode('utf-8') if sys.version_info[0] == 2 else self.appDeploymentId)
+            oprot.writeFieldEnd()
+        if self.applicationDeployment is not None:
+            oprot.writeFieldBegin('applicationDeployment', TType.STRUCT, 3)
+            self.applicationDeployment.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -30739,8 +31588,10 @@ class deleteApplicationModule_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appModuleId is None:
-            raise TProtocolException(message='Required field appModuleId is unset!')
+        if self.appDeploymentId is None:
+            raise TProtocolException(message='Required field appDeploymentId is unset!')
+        if self.applicationDeployment is None:
+            raise TProtocolException(message='Required field applicationDeployment is unset!')
         return
 
     def __repr__(self):
@@ -30755,7 +31606,7 @@ class deleteApplicationModule_args(object):
         return not (self == other)
 
 
-class deleteApplicationModule_result(object):
+class updateApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -30827,7 +31678,7 @@ class deleteApplicationModule_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteApplicationModule_result')
+        oprot.writeStructBegin('updateApplicationDeployment_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -30866,25 +31717,22 @@ class deleteApplicationModule_result(object):
         return not (self == other)
 
 
-class registerApplicationDeployment_args(object):
+class deleteApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - applicationDeployment
+     - appDeploymentId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'applicationDeployment', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, applicationDeployment=None,):
+    def __init__(self, authzToken=None, appDeploymentId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.applicationDeployment = applicationDeployment
+        self.appDeploymentId = appDeploymentId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -30903,13 +31751,7 @@ class registerApplicationDeployment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                    self.applicationDeployment.read(iprot)
+                    self.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -30921,18 +31763,14 @@ class registerApplicationDeployment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerApplicationDeployment_args')
+        oprot.writeStructBegin('deleteApplicationDeployment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
-            oprot.writeFieldEnd()
-        if self.applicationDeployment is not None:
-            oprot.writeFieldBegin('applicationDeployment', TType.STRUCT, 3)
-            self.applicationDeployment.write(oprot)
+        if self.appDeploymentId is not None:
+            oprot.writeFieldBegin('appDeploymentId', TType.STRING, 2)
+            oprot.writeString(self.appDeploymentId.encode('utf-8') if sys.version_info[0] == 2 else self.appDeploymentId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -30940,10 +31778,8 @@ class registerApplicationDeployment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.applicationDeployment is None:
-            raise TProtocolException(message='Required field applicationDeployment is unset!')
+        if self.appDeploymentId is None:
+            raise TProtocolException(message='Required field appDeploymentId is unset!')
         return
 
     def __repr__(self):
@@ -30958,7 +31794,7 @@ class registerApplicationDeployment_args(object):
         return not (self == other)
 
 
-class registerApplicationDeployment_result(object):
+class deleteApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -30969,7 +31805,7 @@ class registerApplicationDeployment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -30993,8 +31829,8 @@ class registerApplicationDeployment_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31030,10 +31866,10 @@ class registerApplicationDeployment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerApplicationDeployment_result')
+        oprot.writeStructBegin('deleteApplicationDeployment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -31069,22 +31905,22 @@ class registerApplicationDeployment_result(object):
         return not (self == other)
 
 
-class getApplicationDeployment_args(object):
+class getAllApplicationDeployments_args(object):
     """
     Attributes:
      - authzToken
-     - appDeploymentId
+     - gatewayId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appDeploymentId=None,):
+    def __init__(self, authzToken=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.appDeploymentId = appDeploymentId
+        self.gatewayId = gatewayId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -31103,7 +31939,7 @@ class getApplicationDeployment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31115,14 +31951,14 @@ class getApplicationDeployment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationDeployment_args')
+        oprot.writeStructBegin('getAllApplicationDeployments_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appDeploymentId is not None:
-            oprot.writeFieldBegin('appDeploymentId', TType.STRING, 2)
-            oprot.writeString(self.appDeploymentId.encode('utf-8') if sys.version_info[0] == 2 else self.appDeploymentId)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -31130,8 +31966,8 @@ class getApplicationDeployment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appDeploymentId is None:
-            raise TProtocolException(message='Required field appDeploymentId is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -31146,7 +31982,7 @@ class getApplicationDeployment_args(object):
         return not (self == other)
 
 
-class getApplicationDeployment_result(object):
+class getAllApplicationDeployments_result(object):
     """
     Attributes:
      - success
@@ -31157,7 +31993,7 @@ class getApplicationDeployment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -31181,9 +32017,14 @@ class getApplicationDeployment_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                    self.success.read(iprot)
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype153, _size150) = iprot.readListBegin()
+                    for _i154 in range(_size150):
+                        _elem155 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                        _elem155.read(iprot)
+                        self.success.append(_elem155)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31219,10 +32060,13 @@ class getApplicationDeployment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationDeployment_result')
+        oprot.writeStructBegin('getAllApplicationDeployments_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 iter156 in self.success:
+                iter156.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -31258,25 +32102,25 @@ class getApplicationDeployment_result(object):
         return not (self == other)
 
 
-class updateApplicationDeployment_args(object):
+class getAccessibleApplicationDeployments_args(object):
     """
     Attributes:
      - authzToken
-     - appDeploymentId
-     - applicationDeployment
+     - gatewayId
+     - permissionType
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'applicationDeployment', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.I32, 'permissionType', None, None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, appDeploymentId=None, applicationDeployment=None,):
+    def __init__(self, authzToken=None, gatewayId=None, permissionType=None,):
         self.authzToken = authzToken
-        self.appDeploymentId = appDeploymentId
-        self.applicationDeployment = applicationDeployment
+        self.gatewayId = gatewayId
+        self.permissionType = permissionType
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -31295,13 +32139,12 @@ class updateApplicationDeployment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                    self.applicationDeployment.read(iprot)
+                if ftype == TType.I32:
+                    self.permissionType = iprot.readI32()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31313,18 +32156,18 @@ class updateApplicationDeployment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateApplicationDeployment_args')
+        oprot.writeStructBegin('getAccessibleApplicationDeployments_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appDeploymentId is not None:
-            oprot.writeFieldBegin('appDeploymentId', TType.STRING, 2)
-            oprot.writeString(self.appDeploymentId.encode('utf-8') if sys.version_info[0] == 2 else self.appDeploymentId)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.applicationDeployment is not None:
-            oprot.writeFieldBegin('applicationDeployment', TType.STRUCT, 3)
-            self.applicationDeployment.write(oprot)
+        if self.permissionType is not None:
+            oprot.writeFieldBegin('permissionType', TType.I32, 3)
+            oprot.writeI32(self.permissionType)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -31332,10 +32175,10 @@ class updateApplicationDeployment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appDeploymentId is None:
-            raise TProtocolException(message='Required field appDeploymentId is unset!')
-        if self.applicationDeployment is None:
-            raise TProtocolException(message='Required field applicationDeployment is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.permissionType is None:
+            raise TProtocolException(message='Required field permissionType is unset!')
         return
 
     def __repr__(self):
@@ -31350,7 +32193,7 @@ class updateApplicationDeployment_args(object):
         return not (self == other)
 
 
-class updateApplicationDeployment_result(object):
+class getAccessibleApplicationDeployments_result(object):
     """
     Attributes:
      - success
@@ -31361,7 +32204,7 @@ class updateApplicationDeployment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -31385,8 +32228,14 @@ class updateApplicationDeployment_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype160, _size157) = iprot.readListBegin()
+                    for _i161 in range(_size157):
+                        _elem162 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                        _elem162.read(iprot)
+                        self.success.append(_elem162)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31422,10 +32271,13 @@ class updateApplicationDeployment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateApplicationDeployment_result')
+        oprot.writeStructBegin('getAccessibleApplicationDeployments_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter163 in self.success:
+                iter163.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -31461,22 +32313,22 @@ class updateApplicationDeployment_result(object):
         return not (self == other)
 
 
-class deleteApplicationDeployment_args(object):
+class getAppModuleDeployedResources_args(object):
     """
     Attributes:
      - authzToken
-     - appDeploymentId
+     - appModuleId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appDeploymentId=None,):
+    def __init__(self, authzToken=None, appModuleId=None,):
         self.authzToken = authzToken
-        self.appDeploymentId = appDeploymentId
+        self.appModuleId = appModuleId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -31495,7 +32347,7 @@ class deleteApplicationDeployment_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31507,14 +32359,14 @@ class deleteApplicationDeployment_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteApplicationDeployment_args')
+        oprot.writeStructBegin('getAppModuleDeployedResources_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appDeploymentId is not None:
-            oprot.writeFieldBegin('appDeploymentId', TType.STRING, 2)
-            oprot.writeString(self.appDeploymentId.encode('utf-8') if sys.version_info[0] == 2 else self.appDeploymentId)
+        if self.appModuleId is not None:
+            oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
+            oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -31522,8 +32374,8 @@ class deleteApplicationDeployment_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appDeploymentId is None:
-            raise TProtocolException(message='Required field appDeploymentId is unset!')
+        if self.appModuleId is None:
+            raise TProtocolException(message='Required field appModuleId is unset!')
         return
 
     def __repr__(self):
@@ -31538,7 +32390,7 @@ class deleteApplicationDeployment_args(object):
         return not (self == other)
 
 
-class deleteApplicationDeployment_result(object):
+class getAppModuleDeployedResources_result(object):
     """
     Attributes:
      - success
@@ -31549,7 +32401,7 @@ class deleteApplicationDeployment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRING, 'UTF8', False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -31573,8 +32425,13 @@ class deleteApplicationDeployment_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype167, _size164) = iprot.readListBegin()
+                    for _i168 in range(_size164):
+                        _elem169 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success.append(_elem169)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31610,10 +32467,13 @@ class deleteApplicationDeployment_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteApplicationDeployment_result')
+        oprot.writeStructBegin('getAppModuleDeployedResources_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRING, len(self.success))
+            for iter170 in self.success:
+                oprot.writeString(iter170.encode('utf-8') if sys.version_info[0] == 2 else iter170)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -31649,22 +32509,25 @@ class deleteApplicationDeployment_result(object):
         return not (self == other)
 
 
-class getAllApplicationDeployments_args(object):
+class registerApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
+     - applicationInterface
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'applicationInterface', (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, applicationInterface=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
+        self.applicationInterface = applicationInterface
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -31686,6 +32549,12 @@ class getAllApplicationDeployments_args(object):
                     self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.applicationInterface = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
+                    self.applicationInterface.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -31695,7 +32564,7 @@ class getAllApplicationDeployments_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllApplicationDeployments_args')
+        oprot.writeStructBegin('registerApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -31704,6 +32573,10 @@ class getAllApplicationDeployments_args(object):
             oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
+        if self.applicationInterface is not None:
+            oprot.writeFieldBegin('applicationInterface', TType.STRUCT, 3)
+            self.applicationInterface.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -31712,6 +32585,8 @@ class getAllApplicationDeployments_args(object):
             raise TProtocolException(message='Required field authzToken is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.applicationInterface is None:
+            raise TProtocolException(message='Required field applicationInterface is unset!')
         return
 
     def __repr__(self):
@@ -31726,7 +32601,7 @@ class getAllApplicationDeployments_args(object):
         return not (self == other)
 
 
-class getAllApplicationDeployments_result(object):
+class registerApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -31737,7 +32612,7 @@ class getAllApplicationDeployments_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -31761,14 +32636,8 @@ class getAllApplicationDeployments_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype153, _size150) = iprot.readListBegin()
-                    for _i154 in range(_size150):
-                        _elem155 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                        _elem155.read(iprot)
-                        self.success.append(_elem155)
-                    iprot.readListEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31804,13 +32673,10 @@ class getAllApplicationDeployments_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllApplicationDeployments_result')
+        oprot.writeStructBegin('registerApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter156 in self.success:
-                iter156.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -31846,25 +32712,28 @@ class getAllApplicationDeployments_result(object):
         return not (self == other)
 
 
-class getAccessibleApplicationDeployments_args(object):
+class cloneApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
+     - existingAppInterfaceID
+     - newApplicationName
      - gatewayId
-     - permissionType
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
-        (3, TType.I32, 'permissionType', None, None, ),  # 3
+        (2, TType.STRING, 'existingAppInterfaceID', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'newApplicationName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, permissionType=None,):
+    def __init__(self, authzToken=None, existingAppInterfaceID=None, newApplicationName=None, gatewayId=None,):
         self.authzToken = authzToken
+        self.existingAppInterfaceID = existingAppInterfaceID
+        self.newApplicationName = newApplicationName
         self.gatewayId = gatewayId
-        self.permissionType = permissionType
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -31883,12 +32752,17 @@ class getAccessibleApplicationDeployments_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.existingAppInterfaceID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.I32:
-                    self.permissionType = iprot.readI32()
+                if ftype == TType.STRING:
+                    self.newApplicationName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31900,29 +32774,29 @@ class getAccessibleApplicationDeployments_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAccessibleApplicationDeployments_args')
+        oprot.writeStructBegin('cloneApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.existingAppInterfaceID is not None:
+            oprot.writeFieldBegin('existingAppInterfaceID', TType.STRING, 2)
+            oprot.writeString(self.existingAppInterfaceID.encode('utf-8') if sys.version_info[0] == 2 else self.existingAppInterfaceID)
+            oprot.writeFieldEnd()
+        if self.newApplicationName is not None:
+            oprot.writeFieldBegin('newApplicationName', TType.STRING, 3)
+            oprot.writeString(self.newApplicationName.encode('utf-8') if sys.version_info[0] == 2 else self.newApplicationName)
+            oprot.writeFieldEnd()
         if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.permissionType is not None:
-            oprot.writeFieldBegin('permissionType', TType.I32, 3)
-            oprot.writeI32(self.permissionType)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.permissionType is None:
-            raise TProtocolException(message='Required field permissionType is unset!')
         return
 
     def __repr__(self):
@@ -31937,7 +32811,7 @@ class getAccessibleApplicationDeployments_args(object):
         return not (self == other)
 
 
-class getAccessibleApplicationDeployments_result(object):
+class cloneApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -31948,7 +32822,7 @@ class getAccessibleApplicationDeployments_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -31972,14 +32846,8 @@ class getAccessibleApplicationDeployments_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype160, _size157) = iprot.readListBegin()
-                    for _i161 in range(_size157):
-                        _elem162 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                        _elem162.read(iprot)
-                        self.success.append(_elem162)
-                    iprot.readListEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32015,13 +32883,10 @@ class getAccessibleApplicationDeployments_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAccessibleApplicationDeployments_result')
+        oprot.writeStructBegin('cloneApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter163 in self.success:
-                iter163.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32057,22 +32922,22 @@ class getAccessibleApplicationDeployments_result(object):
         return not (self == other)
 
 
-class getAppModuleDeployedResources_args(object):
+class getApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
-     - appModuleId
+     - appInterfaceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appModuleId=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.appModuleId = appModuleId
+        self.appInterfaceId = appInterfaceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -32091,7 +32956,7 @@ class getAppModuleDeployedResources_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -32103,14 +32968,14 @@ class getAppModuleDeployedResources_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAppModuleDeployedResources_args')
+        oprot.writeStructBegin('getApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appModuleId is not None:
-            oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
-            oprot.writeString(self.appModuleId.encode('utf-8') if sys.version_info[0] == 2 else self.appModuleId)
+        if self.appInterfaceId is not None:
+            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
+            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -32118,8 +32983,8 @@ class getAppModuleDeployedResources_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appModuleId is None:
-            raise TProtocolException(message='Required field appModuleId is unset!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -32134,7 +32999,7 @@ class getAppModuleDeployedResources_args(object):
         return not (self == other)
 
 
-class getAppModuleDeployedResources_result(object):
+class getApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32145,7 +33010,7 @@ class getAppModuleDeployedResources_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRING, 'UTF8', False), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -32169,13 +33034,9 @@ class getAppModuleDeployedResources_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype167, _size164) = iprot.readListBegin()
-                    for _i168 in range(_size164):
-                        _elem169 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success.append(_elem169)
-                    iprot.readListEnd()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32211,13 +33072,10 @@ class getAppModuleDeployedResources_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAppModuleDeployedResources_result')
+        oprot.writeStructBegin('getApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRING, len(self.success))
-            for iter170 in self.success:
-                oprot.writeString(iter170.encode('utf-8') if sys.version_info[0] == 2 else iter170)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32253,24 +33111,24 @@ class getAppModuleDeployedResources_result(object):
         return not (self == other)
 
 
-class registerApplicationInterface_args(object):
+class updateApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
+     - appInterfaceId
      - applicationInterface
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
         (3, TType.STRUCT, 'applicationInterface', (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, applicationInterface=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None, applicationInterface=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
+        self.appInterfaceId = appInterfaceId
         self.applicationInterface = applicationInterface
 
     def read(self, iprot):
@@ -32290,7 +33148,7 @@ class registerApplicationInterface_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
@@ -32308,14 +33166,14 @@ class registerApplicationInterface_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerApplicationInterface_args')
+        oprot.writeStructBegin('updateApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+        if self.appInterfaceId is not None:
+            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
+            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
             oprot.writeFieldEnd()
         if self.applicationInterface is not None:
             oprot.writeFieldBegin('applicationInterface', TType.STRUCT, 3)
@@ -32327,8 +33185,8 @@ class registerApplicationInterface_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         if self.applicationInterface is None:
             raise TProtocolException(message='Required field applicationInterface is unset!')
         return
@@ -32345,7 +33203,7 @@ class registerApplicationInterface_args(object):
         return not (self == other)
 
 
-class registerApplicationInterface_result(object):
+class updateApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32356,7 +33214,7 @@ class registerApplicationInterface_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -32380,8 +33238,8 @@ class registerApplicationInterface_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32417,10 +33275,10 @@ class registerApplicationInterface_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerApplicationInterface_result')
+        oprot.writeStructBegin('updateApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32456,28 +33314,22 @@ class registerApplicationInterface_result(object):
         return not (self == other)
 
 
-class cloneApplicationInterface_args(object):
+class deleteApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
-     - existingAppInterfaceID
-     - newApplicationName
-     - gatewayId
+     - appInterfaceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'existingAppInterfaceID', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'newApplicationName', 'UTF8', None, ),  # 3
-        (4, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 4
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, existingAppInterfaceID=None, newApplicationName=None, gatewayId=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.existingAppInterfaceID = existingAppInterfaceID
-        self.newApplicationName = newApplicationName
-        self.gatewayId = gatewayId
+        self.appInterfaceId = appInterfaceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -32496,17 +33348,7 @@ class cloneApplicationInterface_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.existingAppInterfaceID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.newApplicationName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
-                if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -32518,22 +33360,14 @@ class cloneApplicationInterface_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('cloneApplicationInterface_args')
+        oprot.writeStructBegin('deleteApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.existingAppInterfaceID is not None:
-            oprot.writeFieldBegin('existingAppInterfaceID', TType.STRING, 2)
-            oprot.writeString(self.existingAppInterfaceID.encode('utf-8') if sys.version_info[0] == 2 else self.existingAppInterfaceID)
-            oprot.writeFieldEnd()
-        if self.newApplicationName is not None:
-            oprot.writeFieldBegin('newApplicationName', TType.STRING, 3)
-            oprot.writeString(self.newApplicationName.encode('utf-8') if sys.version_info[0] == 2 else self.newApplicationName)
-            oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+        if self.appInterfaceId is not None:
+            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
+            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -32541,6 +33375,8 @@ class cloneApplicationInterface_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -32555,7 +33391,7 @@ class cloneApplicationInterface_args(object):
         return not (self == other)
 
 
-class cloneApplicationInterface_result(object):
+class deleteApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32566,7 +33402,7 @@ class cloneApplicationInterface_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -32590,8 +33426,8 @@ class cloneApplicationInterface_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32627,10 +33463,10 @@ class cloneApplicationInterface_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('cloneApplicationInterface_result')
+        oprot.writeStructBegin('deleteApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32666,22 +33502,22 @@ class cloneApplicationInterface_result(object):
         return not (self == other)
 
 
-class getApplicationInterface_args(object):
+class getAllApplicationInterfaceNames_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
+     - gatewayId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None,):
+    def __init__(self, authzToken=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
+        self.gatewayId = gatewayId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -32700,7 +33536,7 @@ class getApplicationInterface_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -32712,14 +33548,14 @@ class getApplicationInterface_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationInterface_args')
+        oprot.writeStructBegin('getAllApplicationInterfaceNames_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appInterfaceId is not None:
-            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
-            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -32727,8 +33563,8 @@ class getApplicationInterface_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appInterfaceId is None:
-            raise TProtocolException(message='Required field appInterfaceId is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -32743,7 +33579,7 @@ class getApplicationInterface_args(object):
         return not (self == other)
 
 
-class getApplicationInterface_result(object):
+class getAllApplicationInterfaceNames_result(object):
     """
     Attributes:
      - success
@@ -32754,7 +33590,7 @@ class getApplicationInterface_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), None, ),  # 0
+        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -32778,9 +33614,14 @@ class getApplicationInterface_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
-                    self.success.read(iprot)
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype172, _vtype173, _size171) = iprot.readMapBegin()
+                    for _i175 in range(_size171):
+                        _key176 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val177 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key176] = _val177
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32816,10 +33657,14 @@ class getApplicationInterface_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationInterface_result')
+        oprot.writeStructBegin('getAllApplicationInterfaceNames_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
+            oprot.writeFieldBegin('success', TType.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
+            for kiter178, viter179 in self.success.items():
+                oprot.writeString(kiter178.encode('utf-8') if sys.version_info[0] == 2 else kiter178)
+                oprot.writeString(viter179.encode('utf-8') if sys.version_info[0] == 2 else viter179)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32855,25 +33700,22 @@ class getApplicationInterface_result(object):
         return not (self == other)
 
 
-class updateApplicationInterface_args(object):
+class getAllApplicationInterfaces_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
-     - applicationInterface
+     - gatewayId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'applicationInterface', (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None, applicationInterface=None,):
+    def __init__(self, authzToken=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
-        self.applicationInterface = applicationInterface
+        self.gatewayId = gatewayId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -32892,13 +33734,7 @@ class updateApplicationInterface_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.applicationInterface = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
-                    self.applicationInterface.read(iprot)
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -32910,18 +33746,14 @@ class updateApplicationInterface_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateApplicationInterface_args')
+        oprot.writeStructBegin('getAllApplicationInterfaces_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appInterfaceId is not None:
-            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
-            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
-            oprot.writeFieldEnd()
-        if self.applicationInterface is not None:
-            oprot.writeFieldBegin('applicationInterface', TType.STRUCT, 3)
-            self.applicationInterface.write(oprot)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -32929,10 +33761,8 @@ class updateApplicationInterface_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appInterfaceId is None:
-            raise TProtocolException(message='Required field appInterfaceId is unset!')
-        if self.applicationInterface is None:
-            raise TProtocolException(message='Required field applicationInterface is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -32947,7 +33777,7 @@ class updateApplicationInterface_args(object):
         return not (self == other)
 
 
-class updateApplicationInterface_result(object):
+class getAllApplicationInterfaces_result(object):
     """
     Attributes:
      - success
@@ -32958,7 +33788,7 @@ class updateApplicationInterface_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -32982,8 +33812,14 @@ class updateApplicationInterface_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype183, _size180) = iprot.readListBegin()
+                    for _i184 in range(_size180):
+                        _elem185 = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
+                        _elem185.read(iprot)
+                        self.success.append(_elem185)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33019,10 +33855,13 @@ class updateApplicationInterface_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateApplicationInterface_result')
+        oprot.writeStructBegin('getAllApplicationInterfaces_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter186 in self.success:
+                iter186.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33058,7 +33897,7 @@ class updateApplicationInterface_result(object):
         return not (self == other)
 
 
-class deleteApplicationInterface_args(object):
+class getApplicationInputs_args(object):
     """
     Attributes:
      - authzToken
@@ -33104,7 +33943,7 @@ class deleteApplicationInterface_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteApplicationInterface_args')
+        oprot.writeStructBegin('getApplicationInputs_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -33135,7 +33974,7 @@ class deleteApplicationInterface_args(object):
         return not (self == other)
 
 
-class deleteApplicationInterface_result(object):
+class getApplicationInputs_result(object):
     """
     Attributes:
      - success
@@ -33146,7 +33985,7 @@ class deleteApplicationInterface_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.InputDataObjectType, airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -33170,8 +34009,14 @@ class deleteApplicationInterface_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype190, _size187) = iprot.readListBegin()
+                    for _i191 in range(_size187):
+                        _elem192 = airavata.model.application.io.ttypes.InputDataObjectType()
+                        _elem192.read(iprot)
+                        self.success.append(_elem192)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33207,10 +34052,13 @@ class deleteApplicationInterface_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteApplicationInterface_result')
+        oprot.writeStructBegin('getApplicationInputs_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter193 in self.success:
+                iter193.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33246,22 +34094,22 @@ class deleteApplicationInterface_result(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaceNames_args(object):
+class getApplicationOutputs_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
+     - appInterfaceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
+        self.appInterfaceId = appInterfaceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -33280,7 +34128,7 @@ class getAllApplicationInterfaceNames_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -33292,14 +34140,14 @@ class getAllApplicationInterfaceNames_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllApplicationInterfaceNames_args')
+        oprot.writeStructBegin('getApplicationOutputs_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+        if self.appInterfaceId is not None:
+            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
+            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -33307,8 +34155,8 @@ class getAllApplicationInterfaceNames_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -33323,7 +34171,7 @@ class getAllApplicationInterfaceNames_args(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaceNames_result(object):
+class getApplicationOutputs_result(object):
     """
     Attributes:
      - success
@@ -33334,7 +34182,7 @@ class getAllApplicationInterfaceNames_result(object):
     """
 
     thrift_spec = (
-        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.OutputDataObjectType, airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -33358,14 +34206,14 @@ class getAllApplicationInterfaceNames_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype172, _vtype173, _size171) = iprot.readMapBegin()
-                    for _i175 in range(_size171):
-                        _key176 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val177 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key176] = _val177
-                    iprot.readMapEnd()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype197, _size194) = iprot.readListBegin()
+                    for _i198 in range(_size194):
+                        _elem199 = airavata.model.application.io.ttypes.OutputDataObjectType()
+                        _elem199.read(iprot)
+                        self.success.append(_elem199)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33401,14 +34249,13 @@ class getAllApplicationInterfaceNames_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllApplicationInterfaceNames_result')
+        oprot.writeStructBegin('getApplicationOutputs_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter178, viter179 in self.success.items():
-                oprot.writeString(kiter178.encode('utf-8') if sys.version_info[0] == 2 else kiter178)
-                oprot.writeString(viter179.encode('utf-8') if sys.version_info[0] == 2 else viter179)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter200 in self.success:
+                iter200.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33444,22 +34291,22 @@ class getAllApplicationInterfaceNames_result(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaces_args(object):
+class getAvailableAppInterfaceComputeResources_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
+     - appInterfaceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
+        self.appInterfaceId = appInterfaceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -33478,7 +34325,7 @@ class getAllApplicationInterfaces_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -33490,14 +34337,14 @@ class getAllApplicationInterfaces_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllApplicationInterfaces_args')
+        oprot.writeStructBegin('getAvailableAppInterfaceComputeResources_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
-            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+        if self.appInterfaceId is not None:
+            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
+            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -33505,8 +34352,8 @@ class getAllApplicationInterfaces_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gatewayId is None:
-            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -33521,7 +34368,7 @@ class getAllApplicationInterfaces_args(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaces_result(object):
+class getAvailableAppInterfaceComputeResources_result(object):
     """
     Attributes:
      - success
@@ -33532,7 +34379,7 @@ class getAllApplicationInterfaces_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), False), None, ),  # 0
+        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -33556,14 +34403,14 @@ class getAllApplicationInterfaces_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype183, _size180) = iprot.readListBegin()
-                    for _i184 in range(_size180):
-                        _elem185 = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
-                        _elem185.read(iprot)
-                        self.success.append(_elem185)
-                    iprot.readListEnd()
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype202, _vtype203, _size201) = iprot.readMapBegin()
+                    for _i205 in range(_size201):
+                        _key206 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val207 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key206] = _val207
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33599,13 +34446,14 @@ class getAllApplicationInterfaces_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllApplicationInterfaces_result')
+        oprot.writeStructBegin('getAvailableAppInterfaceComputeResources_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter186 in self.success:
-                iter186.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
+            for kiter208, viter209 in self.success.items():
+                oprot.writeString(kiter208.encode('utf-8') if sys.version_info[0] == 2 else kiter208)
+                oprot.writeString(viter209.encode('utf-8') if sys.version_info[0] == 2 else viter209)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33641,22 +34489,22 @@ class getAllApplicationInterfaces_result(object):
         return not (self == other)
 
 
-class getApplicationInputs_args(object):
+class registerComputeResource_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
+     - computeResourceDescription
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
+        (2, TType.STRUCT, 'computeResourceDescription', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None,):
+    def __init__(self, authzToken=None, computeResourceDescription=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
+        self.computeResourceDescription = computeResourceDescription
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -33674,8 +34522,9 @@ class getApplicationInputs_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
-                if ftype == TType.STRING:
-                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.STRUCT:
+                    self.computeResourceDescription = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
+                    self.computeResourceDescription.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -33687,14 +34536,14 @@ class getApplicationInputs_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationInputs_args')
+        oprot.writeStructBegin('registerComputeResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appInterfaceId is not None:
-            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
-            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
+        if self.computeResourceDescription is not None:
+            oprot.writeFieldBegin('computeResourceDescription', TType.STRUCT, 2)
+            self.computeResourceDescription.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -33702,8 +34551,8 @@ class getApplicationInputs_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appInterfaceId is None:
-            raise TProtocolException(message='Required field appInterfaceId is unset!')
+        if self.computeResourceDescription is None:
+            raise TProtocolException(message='Required field computeResourceDescription is unset!')
         return
 
     def __repr__(self):
@@ -33718,7 +34567,7 @@ class getApplicationInputs_args(object):
         return not (self == other)
 
 
-class getApplicationInputs_result(object):
+class registerComputeResource_result(object):
     """
     Attributes:
      - success
@@ -33729,7 +34578,7 @@ class getApplicationInputs_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.InputDataObjectType, airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec), False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -33753,14 +34602,8 @@ class getApplicationInputs_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype190, _size187) = iprot.readListBegin()
-                    for _i191 in range(_size187):
-                        _elem192 = airavata.model.application.io.ttypes.InputDataObjectType()
-                        _elem192.read(iprot)
-                        self.success.append(_elem192)
-                    iprot.readListEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33796,13 +34639,10 @@ class getApplicationInputs_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationInputs_result')
+        oprot.writeStructBegin('registerComputeResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter193 in self.success:
-                iter193.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33838,22 +34678,22 @@ class getApplicationInputs_result(object):
         return not (self == other)
 
 
-class getApplicationOutputs_args(object):
+class getComputeResource_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
+     - computeResourceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None,):
+    def __init__(self, authzToken=None, computeResourceId=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
+        self.computeResourceId = computeResourceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -33872,7 +34712,7 @@ class getApplicationOutputs_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.computeResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -33884,14 +34724,14 @@ class getApplicationOutputs_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationOutputs_args')
+        oprot.writeStructBegin('getComputeResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appInterfaceId is not None:
-            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
-            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
+        if self.computeResourceId is not None:
+            oprot.writeFieldBegin('computeResourceId', TType.STRING, 2)
+            oprot.writeString(self.computeResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.computeResourceId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -33899,8 +34739,8 @@ class getApplicationOutputs_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appInterfaceId is None:
-            raise TProtocolException(message='Required field appInterfaceId is unset!')
+        if self.computeResourceId is None:
+            raise TProtocolException(message='Required field computeResourceId is unset!')
         return
 
     def __repr__(self):
@@ -33915,7 +34755,7 @@ class getApplicationOutputs_args(object):
         return not (self == other)
 
 
-class getApplicationOutputs_result(object):
+class getComputeResource_result(object):
     """
     Attributes:
      - success
@@ -33926,7 +34766,7 @@ class getApplicationOutputs_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.application.io.ttypes.OutputDataObjectType, airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), False), None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -33950,14 +34790,9 @@ class getApplicationOutputs_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype197, _size194) = iprot.readListBegin()
-                    for _i198 in range(_size194):
-                        _elem199 = airavata.model.application.io.ttypes.OutputDataObjectType()
-                        _elem199.read(iprot)
-                        self.success.append(_elem199)
-                    iprot.readListEnd()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33993,13 +34828,10 @@ class getApplicationOutputs_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getApplicationOutputs_result')
+        oprot.writeStructBegin('getComputeResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter200 in self.success:
-                iter200.write(oprot)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34035,22 +34867,19 @@ class getApplicationOutputs_result(object):
         return not (self == other)
 
 
-class getAvailableAppInterfaceComputeResources_args(object):
+class getAllComputeResourceNames_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None,):
+    def __init__(self, authzToken=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -34067,11 +34896,6 @@ class getAvailableAppInterfaceComputeResources_args(object):
                     self.authzToken.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 2:
-                if ftype == TType.STRING:
-                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -34081,23 +34905,17 @@ class getAvailableAppInterfaceComputeResources_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAvailableAppInterfaceComputeResources_args')
+        oprot.writeStructBegin('getAllComputeResourceNames_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.appInterfaceId is not None:
-            oprot.writeFieldBegin('appInterfaceId', TType.STRING, 2)
-            oprot.writeString(self.appInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.appInterfaceId)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.appInterfaceId is None:
-            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -34112,7 +34930,7 @@ class getAvailableAppInterfaceComputeResources_args(object):
         return not (self == other)
 
 
-class getAvailableAppInterfaceComputeResources_result(object):
+class getAllComputeResourceNames_result(object):
     """
     Attributes:
      - success
@@ -34149,11 +34967,11 @@ class getAvailableAppInterfaceComputeResources_result(object):
             if fid == 0:
                 if ftype == TType.MAP:
                     self.success = {}
-                    (_ktype202, _vtype203, _size201) = iprot.readMapBegin()
-                    for _i205 in range(_size201):
-                        _key206 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val207 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key206] = _val207
+                    (_ktype211, _vtype212, _size210) = iprot.readMapBegin()
+                    for _i214 in range(_size210):
+                        _key215 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val216 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key215] = _val216
                     iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
@@ -34190,13 +35008,13 @@ class getAvailableAppInterfaceComputeResources_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAvailableAppInterfaceComputeResources_result')
+        oprot.writeStructBegin('getAllComputeResourceNames_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.MAP, 0)
             oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter208, viter209 in self.success.items():
-                oprot.writeString(kiter208.encode('utf-8') if sys.version_info[0] == 2 else kiter208)
-                oprot.writeString(viter209.encode('utf-8') if sys.version_info[0] == 2 else viter209)
+            for kiter217, viter218 in self.success.items():
+                oprot.writeString(kiter217.encode('utf-8') if sys.version_info[0] == 2 else kiter217)
+                oprot.writeString(viter218.encode('utf-8') if sys.version_info[0] == 2 else viter218)
             oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
@@ -34233,21 +35051,24 @@ class getAvailableAppInterfaceComputeResources_result(object):
         return not (self == other)
 
 
-class registerComputeResource_args(object):
+class updateComputeResource_args(object):
     """
     Attributes:
      - authzToken
+     - computeResourceId
      - computeResourceDescription
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'computeResourceDescription', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 2
+        (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'computeResourceDescription', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, computeResourceDescription=None,):
+    def __init__(self, authzToken=None, computeResourceId=None, computeResourceDescription=None,):
         self.authzToken = authzToken
+        self.computeResourceId = computeResourceId
         self.computeResourceDescription = computeResourceDescription
 
     def read(self, iprot):
@@ -34266,6 +35087,11 @@ class registerComputeResource_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
+                if ftype == TType.STRING:
+                    self.computeResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
                 if ftype == TType.STRUCT:
                     self.computeResourceDescription = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
                     self.computeResourceDescription.read(iprot)
@@ -34280,13 +35106,17 @@ class registerComputeResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerComputeResource_args')
+        oprot.writeStructBegin('updateComputeResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.computeResourceId is not None:
+            oprot.writeFieldBegin('computeResourceId', TType.STRING, 2)
+            oprot.writeString(self.computeResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.computeResourceId)
+            oprot.writeFieldEnd()
         if self.computeResourceDescription is not None:
-            oprot.writeFieldBegin('computeResourceDescription', TType.STRUCT, 2)
+            oprot.writeFieldBegin('computeResourceDescription', TType.STRUCT, 3)
             self.computeResourceDescription.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -34295,6 +35125,8 @@ class registerComputeResource_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.computeResourceId is None:
+            raise TProtocolException(message='Required field computeResourceId is unset!')
         if self.computeResourceDescription is None:
             raise TProtocolException(message='Required field computeResourceDescription is unset!')
         return
@@ -34311,7 +35143,7 @@ class registerComputeResource_args(object):
         return not (self == other)
 
 
-class registerComputeResource_result(object):
+class updateComputeResource_result(object):
     """
     Attributes:
      - success
@@ -34322,7 +35154,7 @@ class registerComputeResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -34346,8 +35178,8 @@ class registerComputeResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34383,10 +35215,10 @@ class registerComputeResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerComputeResource_result')
+        oprot.writeStructBegin('updateComputeResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34422,7 +35254,7 @@ class registerComputeResource_result(object):
         return not (self == other)
 
 
-class getComputeResource_args(object):
+class deleteComputeResource_args(object):
     """
     Attributes:
      - authzToken
@@ -34468,7 +35300,7 @@ class getComputeResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getComputeResource_args')
+        oprot.writeStructBegin('deleteComputeResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -34499,7 +35331,7 @@ class getComputeResource_args(object):
         return not (self == other)
 
 
-class getComputeResource_result(object):
+class deleteComputeResource_result(object):
     """
     Attributes:
      - success
@@ -34510,7 +35342,7 @@ class getComputeResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -34534,9 +35366,8 @@ class getComputeResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
-                    self.success.read(iprot)
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34572,10 +35403,10 @@ class getComputeResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getComputeResource_result')
+        oprot.writeStructBegin('deleteComputeResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34611,19 +35442,22 @@ class getComputeResource_result(object):
         return not (self == other)
 
 
-class getAllComputeResourceNames_args(object):
+class registerStorageResource_args(object):
     """
     Attributes:
      - authzToken
+     - storageResourceDescription
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'storageResourceDescription', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 2
     )
 
-    def __init__(self, authzToken=None,):
+    def __init__(self, authzToken=None, storageResourceDescription=None,):
         self.authzToken = authzToken
+        self.storageResourceDescription = storageResourceDescription
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -34640,6 +35474,12 @@ class getAllComputeResourceNames_args(object):
                     self.authzToken.read(iprot)
                 else:
                     iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.storageResourceDescription = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
+                    self.storageResourceDescription.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -34649,17 +35489,23 @@ class getAllComputeResourceNames_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllComputeResourceNames_args')
+        oprot.writeStructBegin('registerStorageResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.storageResourceDescription is not None:
+            oprot.writeFieldBegin('storageResourceDescription', TType.STRUCT, 2)
+            self.storageResourceDescription.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.storageResourceDescription is None:
+            raise TProtocolException(message='Required field storageResourceDescription is unset!')
         return
 
     def __repr__(self):
@@ -34674,7 +35520,7 @@ class getAllComputeResourceNames_args(object):
         return not (self == other)
 
 
-class getAllComputeResourceNames_result(object):
+class registerStorageResource_result(object):
     """
     Attributes:
      - success
@@ -34685,7 +35531,7 @@ class getAllComputeResourceNames_result(object):
     """
 
     thrift_spec = (
-        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -34709,14 +35555,8 @@ class getAllComputeResourceNames_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype211, _vtype212, _size210) = iprot.readMapBegin()
-                    for _i214 in range(_size210):
-                        _key215 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val216 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key215] = _val216
-                    iprot.readMapEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34752,14 +35592,10 @@ class getAllComputeResourceNames_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllComputeResourceNames_result')
+        oprot.writeStructBegin('registerStorageResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter217, viter218 in self.success.items():
-                oprot.writeString(kiter217.encode('utf-8') if sys.version_info[0] == 2 else kiter217)
-                oprot.writeString(viter218.encode('utf-8') if sys.version_info[0] == 2 else viter218)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34795,25 +35631,22 @@ class getAllComputeResourceNames_result(object):
         return not (self == other)
 
 
-class updateComputeResource_args(object):
+class getStorageResource_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceId
-     - computeResourceDescription
+     - storageResourceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'computeResourceDescription', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'storageResourceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, computeResourceId=None, computeResourceDescription=None,):
+    def __init__(self, authzToken=None, storageResourceId=None,):
         self.authzToken = authzToken
-        self.computeResourceId = computeResourceId
-        self.computeResourceDescription = computeResourceDescription
+        self.storageResourceId = storageResourceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -34832,13 +35665,7 @@ class updateComputeResource_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.computeResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.computeResourceDescription = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
-                    self.computeResourceDescription.read(iprot)
+                    self.storageResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -34850,18 +35677,14 @@ class updateComputeResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateComputeResource_args')
+        oprot.writeStructBegin('getStorageResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.computeResourceId is not None:
-            oprot.writeFieldBegin('computeResourceId', TType.STRING, 2)
-            oprot.writeString(self.computeResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.computeResourceId)
-            oprot.writeFieldEnd()
-        if self.computeResourceDescription is not None:
-            oprot.writeFieldBegin('computeResourceDescription', TType.STRUCT, 3)
-            self.computeResourceDescription.write(oprot)
+        if self.storageResourceId is not None:
+            oprot.writeFieldBegin('storageResourceId', TType.STRING, 2)
+            oprot.writeString(self.storageResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.storageResourceId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -34869,10 +35692,8 @@ class updateComputeResource_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.computeResourceId is None:
-            raise TProtocolException(message='Required field computeResourceId is unset!')
-        if self.computeResourceDescription is None:
-            raise TProtocolException(message='Required field computeResourceDescription is unset!')
+        if self.storageResourceId is None:
+            raise TProtocolException(message='Required field storageResourceId is unset!')
         return
 
     def __repr__(self):
@@ -34887,7 +35708,7 @@ class updateComputeResource_args(object):
         return not (self == other)
 
 
-class updateComputeResource_result(object):
+class getStorageResource_result(object):
     """
     Attributes:
      - success
@@ -34898,7 +35719,7 @@ class updateComputeResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -34922,8 +35743,9 @@ class updateComputeResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34959,10 +35781,10 @@ class updateComputeResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateComputeResource_result')
+        oprot.writeStructBegin('getStorageResource_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)
@@ -34998,22 +35820,19 @@ class updateComputeResource_result(object):
         return not (self == other)
 
 
-class deleteComputeResource_args(object):
+class getAllStorageResourceNames_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, computeResourceId=None,):
+    def __init__(self, authzToken=None,):
         self.authzToken = authzToken
-        self.computeResourceId = computeResourceId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -35030,11 +35849,6 @@ class deleteComputeResource_args(object):
                     self.authzToken.read(iprot)
                 else:
                     iprot.skip(ftype)
-            elif fid == 2:
-                if ftype == TType.STRING:
-                    self.computeResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -35044,23 +35858,17 @@ class deleteComputeResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteComputeResource_args')
+        oprot.writeStructBegin('getAllStorageResourceNames_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.computeResourceId is not None:
-            oprot.writeFieldBegin('computeResourceId', TType.STRING, 2)
-            oprot.writeString(self.computeResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.computeResourceId)
-            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.computeResourceId is None:
-            raise TProtocolException(message='Required field computeResourceId is unset!')
         return
 
     def __repr__(self):
@@ -35075,7 +35883,7 @@ class deleteComputeResource_args(object):
         return not (self == other)
 
 
-class deleteComputeResource_result(object):
+class getAllStorageResourceNames_result(object):
     """
     Attributes:
      - success
@@ -35086,7 +35894,7 @@ class deleteComputeResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -35110,8 +35918,14 @@ class deleteComputeResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype220, _vtype221, _size219) = iprot.readMapBegin()
+                    for _i223 in range(_size219):
+                        _key224 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val225 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key224] = _val225
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -35147,10 +35961,14 @@ class deleteComputeResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteComputeResource_result')
+        oprot.writeStructBegin('getAllStorageResourceNames_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            oprot.writeFieldBegin('success', TType.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
+            for kiter226, viter227 in self.success.items():
+                oprot.writeString(kiter226.encode('utf-8') if sys.version_info[0] == 2 else kiter226)
+                oprot.writeString(viter227.encode('utf-8') if sys.version_info[0] == 2 else viter227)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -35186,21 +36004,24 @@ class deleteComputeResource_result(object):
         return not (self == other)
 
 
-class registerStorageResource_args(object):
+class updateStorageResource_args(object):
     """
     Attributes:
      - authzToken
+     - storageResourceId
      - storageResourceDescription
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRUCT, 'storageResourceDescription', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 2
+        (2, TType.STRING, 'storageResourceId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'storageResourceDescription', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, storageResourceDescription=None,):
+    def __init__(self, authzToken=None, storageResourceId=None, storageResourceDescription=None,):
         self.authzToken = authzToken
+        self.storageResourceId = storageResourceId
         self.storageResourceDescription = storageResourceDescription
 
     def read(self, iprot):
@@ -35219,6 +36040,11 @@ class registerStorageResource_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
+                if ftype == TType.STRING:
+                    self.storageResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
                 if ftype == TType.STRUCT:
                     self.storageResourceDescription = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
                     self.storageResourceDescription.read(iprot)
@@ -35233,13 +36059,17 @@ class registerStorageResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerStorageResource_args')
+        oprot.writeStructBegin('updateStorageResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.storageResourceId is not None:
+            oprot.writeFieldBegin('storageResourceId', TType.STRING, 2)
+            oprot.writeString(self.storageResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.storageResourceId)
+            oprot.writeFieldEnd()
         if self.storageResourceDescription is not None:
-            oprot.writeFieldBegin('storageResourceDescription', TType.STRUCT, 2)
+            oprot.writeFieldBegin('storageResourceDescription', TType.STRUCT, 3)
             self.storageResourceDescription.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -35248,6 +36078,8 @@ class registerStorageResource_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.storageResourceId is None:
+            raise TProtocolException(message='Required field storageResourceId is unset!')
         if self.storageResourceDescription is None:
             raise TProtocolException(message='Required field storageResourceDescription is unset!')
         return
@@ -35264,7 +36096,7 @@ class registerStorageResource_args(object):
         return not (self == other)
 
 
-class registerStorageResource_result(object):
+class updateStorageResource_result(object):
     """
     Attributes:
      - success
@@ -35275,7 +36107,7 @@ class registerStorageResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -35299,8 +36131,8 @@ class registerStorageResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRING:
-                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -35336,10 +36168,10 @@ class registerStorageResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('registerStorageResource_result')
+        oprot.writeStructBegin('updateStorageResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRING, 0)
-            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -35375,7 +36207,7 @@ class registerStorageResource_result(object):
         return not (self == other)
 
 
-class getStorageResource_args(object):
+class deleteStorageResource_args(object):
     """
     Attributes:
      - authzToken
@@ -35421,7 +36253,7 @@ class getStorageResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getStorageResource_args')
+        oprot.writeStructBegin('deleteStorageResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -35452,7 +36284,7 @@ class getStorageResource_args(object):
         return not (self == other)
 
 
-class getStorageResource_result(object):
+class deleteStorageResource_result(object):
     """
     Attributes:
      - success
@@ -35463,7 +36295,7 @@ class getStorageResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 0
+        (0, TType.BOOL, 'success', None, None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -35487,9 +36319,8 @@ class getStorageResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
-                    self.success.read(iprot)
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -35525,10 +36356,10 @@ class getStorageResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getStorageResource_result')
+        oprot.writeStructBegin('deleteStorageResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -35564,19 +36395,28 @@ class getStorageResource_result(object):
         return not (self == other)
 
 
-class getAllStorageResourceNames_args(object):
+class addLocalSubmissionDetails_args(object):
     """
     Attributes:
      - authzToken
+     - computeResourceId
+     - priorityOrder
+     - localSubmission
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+        (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
+        (3, TType.I32, 'priorityOrder', None, None, ),  # 3
+        (4, TType.STRUCT, 'localSubmission', (airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission, airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, authzToken=None,):
+    def __init__(self, authzToken=None, computeResourceId=None, priorityOrder=None, localSubmission=None,):
         self.authzToken = authzToken
+        self.computeResourceId = computeResourceId
+        self.priorityOrder = priorityOrder
+        self.localSubmission = localSubmission
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -35593,6 +36433,22 @@ class getAllStorageResourceNames_args(object):
                     self.authzToken.read(iprot)
                 else:
                     iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.computeResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I32:
+                    self.priorityOrder = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.localSubmission = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
+                    self.localSubmission.read(iprot)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -35602,17 +36458,35 @@ class getAllStorageResourceNames_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllStorageResourceNames_args')
+        oprot.writeStructBegin('addLocalSubmissionDetails_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.computeResourceId is not None:
+            oprot.writeFieldBegin('computeResourceId', TType.STRING, 2)
+            oprot.writeString(self.computeResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.computeResourceId)
+            oprot.writeFieldEnd()
+        if self.priorityOrder is not None:
+            oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
+            oprot.writeI32(self.priorityOrder)
+            oprot.writeFieldEnd()
+        if self.localSubmission is not None:
+            oprot.writeFieldBegin('localSubmission', TType.STRUCT, 4)
+            self.localSubmission.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.computeResourceId is None:
+            raise TProtocolException(message='Required field computeResourceId is unset!')
+        if self.priorityOrder is None:
+            raise TProtocolException(message='Required field priorityOrder is unset!')
+        if self.localSubmission is None:
+            raise TProtocolException(message='Required field localSubmission is unset!')
         return
 
     def __repr__(self):
@@ -35627,7 +36501,7 @@ class getAllStorageResourceNames_args(object):
         return not (self == other)
 
 
-class getAllStorageResourceNames_result(object):
+class addLocalSubmissionDetails_result(object):
     """
     Attributes:
      - success
@@ -35638,7 +36512,7 @@ class getAllStorageResourceNames_result(object):
     """
 
     thrift_spec = (
-        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -35662,14 +36536,8 @@ class getAllStorageResourceNames_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype220, _vtype221, _size219) = iprot.readMapBegin()
-                    for _i223 in range(_size219):
-                        _key224 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val225 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key224] = _val225
-                    iprot.readMapEnd()
+                if ftype == TType.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -35705,14 +36573,10 @@ class getAllStorageResourceNames_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('getAllStorageResourceNames_result')
+        oprot.writeStructBegin('addLocalSubmissionDetails_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter226, viter227 in self.success.items():
-                oprot.writeString(kiter226.encode('utf-8') if sys.version_info[0] == 2 else kiter226)
-                oprot.writeString(viter227.encode('utf-8') if sys.version_info[0] == 2 else viter227)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.STRING, 0)
+            oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -35748,25 +36612,25 @@ class getAllStorageResourceNames_result(object):
         return not (self == other)
 
 
-class updateStorageResource_args(object):
+class updateLocalSubmissionDetails_args(object):
     """
     Attributes:
      - authzToken
-     - storageResourceId
-     - storageResourceDescription
+     - jobSubmissionInterfaceId
+     - localSubmission
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'storageResourceId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'storageResourceDescription', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'jobSubmissionInterfaceId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'localSubmission', (airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission, airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, storageResourceId=None, storageResourceDescription=None,):
+    def __init__(self, authzToken=None, jobSubmissionInterfaceId=None, localSubmission=None,):
         self.authzToken = authzToken
-        self.storageResourceId = storageResourceId
-        self.storageResourceDescription = storageResourceDescription
+        self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+        self.localSubmission = localSubmission
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -35785,13 +36649,13 @@ class updateStorageResource_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.storageResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.jobSubmissionInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.storageResourceDescription = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
-                    self.storageResourceDescription.read(iprot)
+                    self.localSubmission = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
+                    self.localSubmission.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -35803,18 +36667,18 @@ class updateStorageResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateStorageResource_args')
+        oprot.writeStructBegin('updateLocalSubmissionDetails_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.storageResourceId is not None:
-            oprot.writeFieldBegin('storageResourceId', TType.STRING, 2)
-            oprot.writeString(self.storageResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.storageResourceId)
+        if self.jobSubmissionInterfaceId is not None:
+            oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 2)
+            oprot.writeString(self.jobSubmissionInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.jobSubmissionInterfaceId)
             oprot.writeFieldEnd()
-        if self.storageResourceDescription is not None:
-            oprot.writeFieldBegin('storageResourceDescription', TType.STRUCT, 3)
-            self.storageResourceDescription.write(oprot)
+        if self.localSubmission is not None:
+            oprot.writeFieldBegin('localSubmission', TType.STRUCT, 3)
+            self.localSubmission.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -35822,10 +36686,10 @@ class updateStorageResource_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.storageResourceId is None:
-            raise TProtocolException(message='Required field storageResourceId is unset!')
-        if self.storageResourceDescription is None:
-            raise TProtocolException(message='Required field storageResourceDescription is unset!')
+        if self.jobSubmissionInterfaceId is None:
+            raise TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+        if self.localSubmission is None:
+            raise TProtocolException(message='Required field localSubmission is unset!')
         return
 
     def __repr__(self):
@@ -35840,7 +36704,7 @@ class updateStorageResource_args(object):
         return not (self == other)
 
 
-class updateStorageResource_result(object):
+class updateLocalSubmissionDetails_result(object):
     """
     Attributes:
      - success
@@ -35912,7 +36776,7 @@ class updateStorageResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateStorageResource_result')
+        oprot.writeStructBegin('updateLocalSubmissionDetails_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -35951,22 +36815,22 @@ class updateStorageResource_result(object):
         return not (self == other)
 
 
-class deleteStorageResource_args(object):
+class getLocalJobSubmission_args(object):
     """
     Attributes:
      - authzToken
-     - storageResourceId
+     - jobSubmissionId
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'storageResourceId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'jobSubmissionId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, storageResourceId=None,):
+    def __init__(self, authzToken=None, jobSubmissionId=None,):
         self.authzToken = authzToken
-        self.storageResourceId = storageResourceId
+        self.jobSubmissionId = jobSubmissionId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -35985,7 +36849,7 @@ class deleteStorageResource_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.storageResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.jobSubmissionId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -35997,14 +36861,14 @@ class deleteStorageResource_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteStorageResource_args')
+        oprot.writeStructBegin('getLocalJobSubmission_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.storageResourceId is not None:
-            oprot.writeFieldBegin('storageResourceId', TType.STRING, 2)
-            oprot.writeString(self.storageResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.storageResourceId)
+        if self.jobSubmissionId is not None:
+            oprot.writeFieldBegin('jobSubmissionId', TType.STRING, 2)
+            oprot.writeString(self.jobSubmissionId.encode('utf-8') if sys.version_info[0] == 2 else self.jobSubmissionId)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -36012,8 +36876,8 @@ class deleteStorageResource_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.storageResourceId is None:
-            raise TProtocolException(message='Required field storageResourceId is unset!')
+        if self.jobSubmissionId is None:
+            raise TProtocolException(message='Required field jobSubmissionId is unset!')
         return
 
     def __repr__(self):
@@ -36028,7 +36892,7 @@ class deleteStorageResource_args(object):
         return not (self == other)
 
 
-class deleteStorageResource_result(object):
+class getLocalJobSubmission_result(object):
     """
     Attributes:
      - success
@@ -36039,7 +36903,7 @@ class deleteStorageResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission, airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission.thrift_spec), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
@@ -36063,8 +36927,9 @@ class deleteStorageResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -36100,10 +36965,10 @@ class deleteStorageResource_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('deleteStorageResource_result')
+        oprot.writeStructBegin('getLocalJobSubmission_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)
@@ -36139,13 +37004,13 @@ class deleteStorageResource_result(object):
         return not (self == other)
 
 
-class addLocalSubmissionDetails_args(object):
+class addSSHJobSubmissionDetails_args(object):
     """
     Attributes:
      - authzToken
      - computeResourceId
      - priorityOrder
-     - localSubmission
+     - sshJobSubmission
     """
 
     thrift_spec = (
@@ -36153,14 +37018,14 @@ class addLocalSubmissionDetails_args(object):
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
         (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
         (3, TType.I32, 'priorityOrder', None, None, ),  # 3
-        (4, TType.STRUCT, 'localSubmission', (airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission, airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission.thrift_spec), None, ),  # 4
+        (4, TType.STRUCT, 'sshJobSubmission', (airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission, airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, computeResourceId=None, priorityOrder=None, localSubmission=None,):
+    def __init__(self, authzToken=None, computeResourceId=None, priorityOrder=None, sshJobSubmission=None,):
         self.authzToken = authzToken
         self.computeResourceId = computeResourceId
         self.priorityOrder = priorityOrder
-        self.localSubmission = localSubmission
+        self.sshJobSubmission = sshJobSubmission
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -36189,8 +37054,8 @@ class addLocalSubmissionDetails_args(object):
                     iprot.skip(ftype)
             elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.localSubmission = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
-                    self.localSubmission.read(iprot)
+                    self.sshJobSubmission = airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission()
+                    self.sshJobSubmission.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -36202,7 +37067,7 @@ class addLocalSubmissionDetails_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('addLocalSubmissionDetails_args')
+        oprot.writeStructBegin('addSSHJobSubmissionDetails_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -36215,9 +37080,9 @@ class addLocalSubmissionDetails_args(object):
             oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
             oprot.writeI32(self.priorityOrder)
             oprot.writeFieldEnd()
-        if self.localSubmission is not None:
-            oprot.writeFieldBegin('localSubmission', TType.STRUCT, 4)
-            self.localSubmission.write(oprot)
+        if self.sshJobSubmission is not None:
+            oprot.writeFieldBegin('sshJobSubmission', TType.STRUCT, 4)
+            self.sshJobSubmission.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -36229,8 +37094,8 @@ class addLocalSubmissionDetails_args(object):
             raise TProtocolException(message='Required field computeResourceId is unset!')
         if self.priorityOrder is None:
             raise TProtocolException(message='Required field priorityOrder is unset!')
-        if self.localSubmission is None:
-            raise TProtocolException(message='Required field localSubmission is unset!')
+        if self.sshJobSubmission is None:
+            raise TProtocolException(message='Required field sshJobSubmission is unset!')
         return
 
     def __repr__(self):
@@ -36245,7 +37110,7 @@ class addLocalSubmissionDetails_args(object):
         return not (self == other)
 
 
-class addLocalSubmissionDetails_result(object):
+class addSSHJobSubmissionDetails_result(object):
     """
     Attributes:
      - success
@@ -36317,7 +37182,7 @@ class addLocalSubmissionDetails_result(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('addLocalSubmissionDetails_result')
+        oprot.writeStructBegin('addSSHJobSubmissionDetails_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRING, 0)
             oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success)
@@ -36356,25 +37221,28 @@ class addLocalSubmissionDetails_result(object):
         return not (self == other)
 
 
-class updateLocalSubmissionDetails_args(object):
+class addSSHForkJobSubmissionDetails_args(object):
     """
     Attributes:
      - authzToken
-     - jobSubmissionInterfaceId
-     - localSubmission
+     - computeResourceId
+     - priorityOrder
+     - sshJobSubmission
     """
 
     thrift_spec = (
         None,  # 0
         (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
-        (2, TType.STRING, 'jobSubmissionInterfaceId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'localSubmission', (airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission, airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'computeResourceId', 'UTF8', None, ),  # 2
+        (3, TType.I32, 'priorityOrder', None, None, ),  # 3
+        (4, TType.STRUCT, 'sshJobSubmission', (airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission, airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission.thrift_spec), None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, jobSubmissionInterfaceId=None, localSubmission=None,):
+    def __init__(self, authzToken=None, computeResourceId=None, priorityOrder=None, sshJobSubmission=None,):
         self.authzToken = authzToken
-        self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
-        self.localSubmission = localSubmission
+        self.computeResourceId = computeResourceId
+        self.priorityOrder = priorityOrder
+        self.sshJobSubmission = sshJobSubmission
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -36393,13 +37261,18 @@ class updateLocalSubmissionDetails_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.jobSubmissionInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.computeResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
+                if ftype == TType.I32:
+                    self.priorityOrder = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.localSubmission = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
-                    self.localSubmission.read(iprot)
+                    self.sshJobSubmission = airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission()
+                    self.sshJobSubmission.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -36411,18 +37284,22 @@ class updateLocalSubmissionDetails_args(object):
         if oprot._fast_encode is not None and self.thrift_spec is not None:
             oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
             return
-        oprot.writeStructBegin('updateLocalSubmissionDetails_args')
+        oprot.writeStructBegin('addSSHForkJobSubmissionDetails_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.jobSubmissionInterfaceId is not None:
-            oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 2)
-            oprot.writeString(self.jobSubmissionInterfaceId.encode('utf-8') if sys.version_info[0] == 2 else self.jobSubmissionInterfaceId)
+        if self.computeResourceId is not None:
+            oprot.writeFieldBegin('computeResourceId', TType.STRING, 2)
+            oprot.writeString(self.computeResourceId.encode('utf-8') if sys.version_info[0] == 2 else self.computeResourceId)
             oprot.writeFieldEnd()
-        if self.localSubmission is not None:
-            oprot.writeFieldBegin('localSubmission', TType.STRUCT, 3)
-            self.localSubmission.write(oprot)
+        if self.priorityOrder is not None:
+            oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
+            oprot.writeI32(self.priorityOrder)
+            oprot.writeFieldEnd()
+        if self.sshJobSubmission is not None:
+            oprot.writeFieldBegin('sshJobSubmission', TType.STRUCT, 4)
+            self.sshJobSubmission.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -36430,10 +37307,12 @@ class updateLocalSubmissionDetails_args(object):
     def validate(self):
... 10735 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

Mime
View raw message