You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2018/01/18 22:37:33 UTC

[airavata-django-portal] 02/03: AIRAVATA-2645 Generated Thrift stubs (Profile services)

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 a994a7870a85f48ad2f01fdeb8975ee47af7de7b
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Jan 18 11:29:08 2018 -0500

    AIRAVATA-2645 Generated Thrift stubs (Profile services)
---
 airavata/api/Airavata-remote                       |    35 -
 airavata/api/Airavata.py                           | 10106 ++++++++-----------
 airavata/api/sharing/SharingRegistryService-remote |    35 +
 airavata/api/sharing/SharingRegistryService.py     |  1695 +++-
 airavata/model/sharing/ttypes.py                   |    84 +
 airavata/model/user/ttypes.py                      |   369 +-
 airavata/service/__init__.py                       |     0
 airavata/service/profile/__init__.py               |     1 +
 airavata/service/profile/constants.py              |    12 +
 airavata/service/profile/groupmanager/__init__.py  |     0
 .../groupmanager/cpi/GroupManagerService-remote    |   180 +
 .../groupmanager/cpi/GroupManagerService.py        |  2508 +++++
 .../service/profile/groupmanager/cpi/__init__.py   |     1 +
 .../service/profile/groupmanager/cpi/constants.py  |    14 +
 .../profile/groupmanager/cpi/error/__init__.py     |     1 +
 .../profile/groupmanager/cpi/error/constants.py    |    12 +
 .../profile/groupmanager/cpi/error/ttypes.py       |    78 +
 .../service/profile/groupmanager/cpi/ttypes.py     |    17 +
 airavata/service/profile/iam/__init__.py           |     0
 airavata/service/profile/iam/admin/__init__.py     |     0
 .../service/profile/iam/admin/services/__init__.py |     0
 .../iam/admin/services/cpi/IamAdminServices-remote |   180 +
 .../iam/admin/services/cpi/IamAdminServices.py     |  2505 +++++
 .../profile/iam/admin/services/cpi/__init__.py     |     1 +
 .../profile/iam/admin/services/cpi/constants.py    |    14 +
 .../iam/admin/services/cpi/error/__init__.py       |     1 +
 .../iam/admin/services/cpi/error/constants.py      |    12 +
 .../profile/iam/admin/services/cpi/error/ttypes.py |    78 +
 .../profile/iam/admin/services/cpi/ttypes.py       |    19 +
 airavata/service/profile/tenant/__init__.py        |     0
 .../profile/tenant/cpi/TenantProfileService-remote |   166 +
 .../profile/tenant/cpi/TenantProfileService.py     |  1920 ++++
 airavata/service/profile/tenant/cpi/__init__.py    |     1 +
 airavata/service/profile/tenant/cpi/constants.py   |    14 +
 .../service/profile/tenant/cpi/error/__init__.py   |     1 +
 .../service/profile/tenant/cpi/error/constants.py  |    12 +
 .../service/profile/tenant/cpi/error/ttypes.py     |    78 +
 airavata/service/profile/tenant/cpi/ttypes.py      |    17 +
 airavata/service/profile/ttypes.py                 |    17 +
 airavata/service/profile/user/__init__.py          |     0
 .../profile/user/cpi/UserProfileService-remote     |   152 +
 .../service/profile/user/cpi/UserProfileService.py |  1543 +++
 airavata/service/profile/user/cpi/__init__.py      |     1 +
 airavata/service/profile/user/cpi/constants.py     |    14 +
 .../service/profile/user/cpi/error/__init__.py     |     1 +
 .../service/profile/user/cpi/error/constants.py    |    12 +
 airavata/service/profile/user/cpi/error/ttypes.py  |    78 +
 airavata/service/profile/user/cpi/ttypes.py        |    17 +
 48 files changed, 15974 insertions(+), 6028 deletions(-)

diff --git a/airavata/api/Airavata-remote b/airavata/api/Airavata-remote
index 419bfb4..0d3d470 100755
--- a/airavata/api/Airavata-remote
+++ b/airavata/api/Airavata-remote
@@ -191,11 +191,6 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
     print('  bool shareResourceWithUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
     print('  bool revokeSharingOfResourceFromUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
     print('   getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType, ResourcePermissionType permissionType)')
-    print('  string createGroup(AuthzToken authzToken, GroupModel groupModel)')
-    print('  bool updateGroup(AuthzToken authzToken, GroupModel groupModel)')
-    print('  bool deleteGroup(AuthzToken authzToken, string groupId, string ownerId)')
-    print('  GroupModel getGroup(AuthzToken authzToken, string groupId)')
-    print('   getAllGroupsUserBelongs(AuthzToken authzToken, string userName)')
     print('')
     sys.exit(0)
 
@@ -1277,36 +1272,6 @@ elif cmd == 'getAllAccessibleUsers':
         sys.exit(1)
     pp.pprint(client.getAllAccessibleUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
 
-elif cmd == 'createGroup':
-    if len(args) != 2:
-        print('createGroup requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.createGroup(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'updateGroup':
-    if len(args) != 2:
-        print('updateGroup requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.updateGroup(eval(args[0]), eval(args[1]),))
-
-elif cmd == 'deleteGroup':
-    if len(args) != 3:
-        print('deleteGroup requires 3 args')
-        sys.exit(1)
-    pp.pprint(client.deleteGroup(eval(args[0]), args[1], args[2],))
-
-elif cmd == 'getGroup':
-    if len(args) != 2:
-        print('getGroup requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getGroup(eval(args[0]), args[1],))
-
-elif cmd == 'getAllGroupsUserBelongs':
-    if len(args) != 2:
-        print('getAllGroupsUserBelongs requires 2 args')
-        sys.exit(1)
-    pp.pprint(client.getAllGroupsUserBelongs(eval(args[0]), args[1],))
-
 else:
     print('Unrecognized method %s' % cmd)
     sys.exit(1)
diff --git a/airavata/api/Airavata.py b/airavata/api/Airavata.py
index cd8cae0..772a5a0 100644
--- a/airavata/api/Airavata.py
+++ b/airavata/api/Airavata.py
@@ -3444,47 +3444,6 @@ class Iface(object):
         """
         pass
 
-    def createGroup(self, authzToken, groupModel):
-        """
-        Parameters:
-         - authzToken
-         - groupModel
-        """
-        pass
-
-    def updateGroup(self, authzToken, groupModel):
-        """
-        Parameters:
-         - authzToken
-         - groupModel
-        """
-        pass
-
-    def deleteGroup(self, authzToken, groupId, ownerId):
-        """
-        Parameters:
-         - authzToken
-         - groupId
-         - ownerId
-        """
-        pass
-
-    def getGroup(self, authzToken, groupId):
-        """
-        Parameters:
-         - authzToken
-         - groupId
-        """
-        pass
-
-    def getAllGroupsUserBelongs(self, authzToken, userName):
-        """
-        Parameters:
-         - authzToken
-         - userName
-        """
-        pass
-
 
 class Client(Iface):
     def __init__(self, iprot, oprot=None):
@@ -12565,213 +12524,6 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllAccessibleUsers failed: unknown result")
 
-    def createGroup(self, authzToken, groupModel):
-        """
-        Parameters:
-         - authzToken
-         - groupModel
-        """
-        self.send_createGroup(authzToken, groupModel)
-        return self.recv_createGroup()
-
-    def send_createGroup(self, authzToken, groupModel):
-        self._oprot.writeMessageBegin('createGroup', TMessageType.CALL, self._seqid)
-        args = createGroup_args()
-        args.authzToken = authzToken
-        args.groupModel = groupModel
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_createGroup(self):
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = createGroup_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, "createGroup failed: unknown result")
-
-    def updateGroup(self, authzToken, groupModel):
-        """
-        Parameters:
-         - authzToken
-         - groupModel
-        """
-        self.send_updateGroup(authzToken, groupModel)
-        return self.recv_updateGroup()
-
-    def send_updateGroup(self, authzToken, groupModel):
-        self._oprot.writeMessageBegin('updateGroup', TMessageType.CALL, self._seqid)
-        args = updateGroup_args()
-        args.authzToken = authzToken
-        args.groupModel = groupModel
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_updateGroup(self):
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = updateGroup_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, "updateGroup failed: unknown result")
-
-    def deleteGroup(self, authzToken, groupId, ownerId):
-        """
-        Parameters:
-         - authzToken
-         - groupId
-         - ownerId
-        """
-        self.send_deleteGroup(authzToken, groupId, ownerId)
-        return self.recv_deleteGroup()
-
-    def send_deleteGroup(self, authzToken, groupId, ownerId):
-        self._oprot.writeMessageBegin('deleteGroup', TMessageType.CALL, self._seqid)
-        args = deleteGroup_args()
-        args.authzToken = authzToken
-        args.groupId = groupId
-        args.ownerId = ownerId
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_deleteGroup(self):
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = deleteGroup_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, "deleteGroup failed: unknown result")
-
-    def getGroup(self, authzToken, groupId):
-        """
-        Parameters:
-         - authzToken
-         - groupId
-        """
-        self.send_getGroup(authzToken, groupId)
-        return self.recv_getGroup()
-
-    def send_getGroup(self, authzToken, groupId):
-        self._oprot.writeMessageBegin('getGroup', TMessageType.CALL, self._seqid)
-        args = getGroup_args()
-        args.authzToken = authzToken
-        args.groupId = groupId
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getGroup(self):
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getGroup_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, "getGroup failed: unknown result")
-
-    def getAllGroupsUserBelongs(self, authzToken, userName):
-        """
-        Parameters:
-         - authzToken
-         - userName
-        """
-        self.send_getAllGroupsUserBelongs(authzToken, userName)
-        return self.recv_getAllGroupsUserBelongs()
-
-    def send_getAllGroupsUserBelongs(self, authzToken, userName):
-        self._oprot.writeMessageBegin('getAllGroupsUserBelongs', TMessageType.CALL, self._seqid)
-        args = getAllGroupsUserBelongs_args()
-        args.authzToken = authzToken
-        args.userName = userName
-        args.write(self._oprot)
-        self._oprot.writeMessageEnd()
-        self._oprot.trans.flush()
-
-    def recv_getAllGroupsUserBelongs(self):
-        iprot = self._iprot
-        (fname, mtype, rseqid) = iprot.readMessageBegin()
-        if mtype == TMessageType.EXCEPTION:
-            x = TApplicationException()
-            x.read(iprot)
-            iprot.readMessageEnd()
-            raise x
-        result = getAllGroupsUserBelongs_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, "getAllGroupsUserBelongs failed: unknown result")
-
 
 class Processor(Iface, TProcessor):
     def __init__(self, handler):
@@ -12944,11 +12696,6 @@ class Processor(Iface, TProcessor):
         self._processMap["shareResourceWithUsers"] = Processor.process_shareResourceWithUsers
         self._processMap["revokeSharingOfResourceFromUsers"] = Processor.process_revokeSharingOfResourceFromUsers
         self._processMap["getAllAccessibleUsers"] = Processor.process_getAllAccessibleUsers
-        self._processMap["createGroup"] = Processor.process_createGroup
-        self._processMap["updateGroup"] = Processor.process_updateGroup
-        self._processMap["deleteGroup"] = Processor.process_deleteGroup
-        self._processMap["getGroup"] = Processor.process_getGroup
-        self._processMap["getAllGroupsUserBelongs"] = Processor.process_getAllGroupsUserBelongs
 
     def process(self, iprot, oprot):
         (name, type, seqid) = iprot.readMessageBegin()
@@ -18157,161 +17904,6 @@ class Processor(Iface, TProcessor):
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_createGroup(self, seqid, iprot, oprot):
-        args = createGroup_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = createGroup_result()
-        try:
-            result.success = self._handler.createGroup(args.authzToken, args.groupModel)
-            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("createGroup", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
-
-    def process_updateGroup(self, seqid, iprot, oprot):
-        args = updateGroup_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = updateGroup_result()
-        try:
-            result.success = self._handler.updateGroup(args.authzToken, args.groupModel)
-            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("updateGroup", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
-
-    def process_deleteGroup(self, seqid, iprot, oprot):
-        args = deleteGroup_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = deleteGroup_result()
-        try:
-            result.success = self._handler.deleteGroup(args.authzToken, args.groupId, args.ownerId)
-            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("deleteGroup", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
-
-    def process_getGroup(self, seqid, iprot, oprot):
-        args = getGroup_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = getGroup_result()
-        try:
-            result.success = self._handler.getGroup(args.authzToken, args.groupId)
-            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("getGroup", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
-
-    def process_getAllGroupsUserBelongs(self, seqid, iprot, oprot):
-        args = getAllGroupsUserBelongs_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = getAllGroupsUserBelongs_result()
-        try:
-            result.success = self._handler.getAllGroupsUserBelongs(args.authzToken, args.userName)
-            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("getAllGroupsUserBelongs", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
-
 # HELPER FUNCTIONS AND STRUCTURES
 
 
@@ -23001,1142 +22593,25 @@ class createProject_result(object):
         return not (self == other)
 
 
-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):
+class updateProject_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - userName
-     - filters
-     - limit
-     - offset
+     - 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, '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, '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, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
+    def __init__(self, authzToken=None, projectId=None, updatedProject=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.userName = userName
-        self.filters = filters
-        self.limit = limit
-        self.offset = offset
+        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:
@@ -24155,33 +22630,13 @@ 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()
+                    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.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()
+                if ftype == TType.STRUCT:
+                    self.updatedProject = airavata.model.workspace.ttypes.Project()
+                    self.updatedProject.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -24193,34 +22648,18 @@ 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('updateProject_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)
+        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.offset is not None:
-            oprot.writeFieldBegin('offset', TType.I32, 6)
-            oprot.writeI32(self.offset)
+        if self.updatedProject is not None:
+            oprot.writeFieldBegin('updatedProject', TType.STRUCT, 3)
+            self.updatedProject.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -24228,14 +22667,10 @@ 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.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):
@@ -24250,29 +22685,30 @@ class searchExperiments_args(object):
         return not (self == other)
 
 
-class searchExperiments_result(object):
+class updateProject_result(object):
     """
     Attributes:
-     - success
      - ire
      - ace
      - ase
+     - pnfe
      - ae
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.experiment.ttypes.ExperimentSummaryModel, airavata.model.experiment.ttypes.ExperimentSummaryModel.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, '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
+        (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, ae=None,):
-        self.success = success
+    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):
@@ -24284,18 +22720,7 @@ class searchExperiments_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             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()
-                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)
@@ -24315,6 +22740,12 @@ class searchExperiments_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:
@@ -24328,14 +22759,7 @@ 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')
-        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()
+        oprot.writeStructBegin('updateProject_result')
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -24348,8 +22772,12 @@ class searchExperiments_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, 4)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -24370,37 +22798,22 @@ class searchExperiments_result(object):
         return not (self == other)
 
 
-class getExperimentStatistics_args(object):
+class getProject_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - fromTime
-     - toTime
-     - userName
-     - applicationName
-     - resourceHostName
+     - 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, '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, 'projectId', '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, projectId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.fromTime = fromTime
-        self.toTime = toTime
-        self.userName = userName
-        self.applicationName = applicationName
-        self.resourceHostName = resourceHostName
+        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:
@@ -24419,32 +22832,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.projectId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -24456,34 +22844,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('getProject_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.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()
@@ -24491,12 +22859,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.projectId is None:
+            raise TProtocolException(message='Required field projectId is unset!')
         return
 
     def __repr__(self):
@@ -24511,29 +22875,32 @@ class getExperimentStatistics_args(object):
         return not (self == other)
 
 
-class getExperimentStatistics_result(object):
+class getProject_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
+     - pnfe
      - 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.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, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ),  # 4
+        (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, ae=None,):
+    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):
@@ -24547,7 +22914,7 @@ class getExperimentStatistics_result(object):
                 break
             if fid == 0:
                 if ftype == TType.STRUCT:
-                    self.success = airavata.model.experiment.ttypes.ExperimentStatistics()
+                    self.success = airavata.model.workspace.ttypes.Project()
                     self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
@@ -24571,6 +22938,12 @@ class getExperimentStatistics_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:
@@ -24584,7 +22957,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('getProject_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRUCT, 0)
             self.success.write(oprot)
@@ -24601,8 +22974,12 @@ class getExperimentStatistics_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, 4)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 5)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -24623,28 +23000,22 @@ class getExperimentStatistics_result(object):
         return not (self == other)
 
 
-class getExperimentsInProject_args(object):
+class deleteProject_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, limit=None, offset=None,):
+    def __init__(self, authzToken=None, projectId=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:
@@ -24666,16 +23037,6 @@ class getExperimentsInProject_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()
@@ -24685,7 +23046,7 @@ 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('deleteProject_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -24694,14 +23055,6 @@ class getExperimentsInProject_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()
 
@@ -24710,10 +23063,6 @@ class getExperimentsInProject_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):
@@ -24728,7 +23077,7 @@ class getExperimentsInProject_args(object):
         return not (self == other)
 
 
-class getExperimentsInProject_result(object):
+class deleteProject_result(object):
     """
     Attributes:
      - success
@@ -24740,7 +23089,7 @@ class getExperimentsInProject_result(object):
     """
 
     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.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
@@ -24766,14 +23115,8 @@ 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.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -24815,13 +23158,10 @@ 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('deleteProject_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.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -24861,7 +23201,7 @@ class getExperimentsInProject_result(object):
         return not (self == other)
 
 
-class getUserExperiments_args(object):
+class getUserProjects_args(object):
     """
     Attributes:
      - authzToken
@@ -24931,7 +23271,7 @@ 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('getUserProjects_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -24980,7 +23320,7 @@ class getUserExperiments_args(object):
         return not (self == other)
 
 
-class getUserExperiments_result(object):
+class getUserProjects_result(object):
     """
     Attributes:
      - success
@@ -24991,7 +23331,7 @@ class getUserExperiments_result(object):
     """
 
     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.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
@@ -25017,11 +23357,11 @@ class getUserExperiments_result(object):
             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)
+                    (_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)
@@ -25058,12 +23398,12 @@ 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('getUserProjects_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)
+            for iter59 in self.success:
+                iter59.write(oprot)
             oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
@@ -25100,25 +23440,34 @@ class getUserExperiments_result(object):
         return not (self == other)
 
 
-class createExperiment_args(object):
+class searchProjects_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
-     - experiment
+     - 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.STRUCT, 'experiment', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ),  # 3
+        (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, experiment=None,):
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
-        self.experiment = experiment
+        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:
@@ -25141,9 +23490,29 @@ class createExperiment_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.experiment = airavata.model.experiment.ttypes.ExperimentModel()
-                    self.experiment.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 = {}
+                    (_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:
@@ -25155,7 +23524,7 @@ 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('searchProjects_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -25164,9 +23533,25 @@ class createExperiment_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.experiment is not None:
-            oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
-            self.experiment.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 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()
@@ -25176,8 +23561,12 @@ class createExperiment_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.experiment is None:
-            raise TProtocolException(message='Required field experiment 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):
@@ -25192,7 +23581,7 @@ class createExperiment_args(object):
         return not (self == other)
 
 
-class createExperiment_result(object):
+class searchProjects_result(object):
     """
     Attributes:
      - success
@@ -25203,7 +23592,7 @@ class createExperiment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (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
@@ -25227,8 +23616,14 @@ class createExperiment_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 = []
+                    (_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:
@@ -25264,10 +23659,13 @@ 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')
+        oprot.writeStructBegin('searchProjects_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 iter75 in self.success:
+                iter75.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -25303,22 +23701,34 @@ class createExperiment_result(object):
         return not (self == other)
 
 
-class deleteExperiment_args(object):
+class searchExperiments_args(object):
     """
     Attributes:
      - authzToken
-     - experimentId
+     - 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, 'experimentId', 'UTF8', None, ),  # 2
+        (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, experimentId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, filters=None, limit=None, offset=None,):
         self.authzToken = authzToken
-        self.experimentId = experimentId
+        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:
@@ -25337,7 +23747,33 @@ 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.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()
                 else:
                     iprot.skip(ftype)
             else:
@@ -25349,14 +23785,34 @@ 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('searchExperiments_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.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)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -25364,8 +23820,14 @@ 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.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):
@@ -25380,7 +23842,7 @@ class deleteExperiment_args(object):
         return not (self == other)
 
 
-class deleteExperiment_result(object):
+class searchExperiments_result(object):
     """
     Attributes:
      - success
@@ -25391,7 +23853,7 @@ class deleteExperiment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, 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
@@ -25415,8 +23877,14 @@ class deleteExperiment_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                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:
@@ -25452,10 +23920,13 @@ 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')
+        oprot.writeStructBegin('searchExperiments_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 iter91 in self.success:
+                iter91.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -25491,22 +23962,37 @@ class deleteExperiment_result(object):
         return not (self == other)
 
 
-class getExperiment_args(object):
+class getExperimentStatistics_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
+     - 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, 'airavataExperimentId', '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, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, fromTime=None, toTime=None, userName=None, applicationName=None, resourceHostName=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
+        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:
@@ -25525,7 +24011,32 @@ class getExperiment_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.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:
@@ -25537,14 +24048,34 @@ 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('getExperimentStatistics_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.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()
@@ -25552,8 +24083,12 @@ class getExperiment_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!')
+        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):
@@ -25568,30 +24103,27 @@ class getExperiment_args(object):
         return not (self == other)
 
 
-class getExperiment_result(object):
+class getExperimentStatistics_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
+        (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, '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, success=None, 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
@@ -25607,7 +24139,7 @@ class getExperiment_result(object):
                 break
             if fid == 0:
                 if ftype == TType.STRUCT:
-                    self.success = airavata.model.experiment.ttypes.ExperimentModel()
+                    self.success = airavata.model.experiment.ttypes.ExperimentStatistics()
                     self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
@@ -25619,23 +24151,17 @@ class getExperiment_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)
@@ -25650,7 +24176,7 @@ 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')
+        oprot.writeStructBegin('getExperimentStatistics_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRUCT, 0)
             self.success.write(oprot)
@@ -25659,20 +24185,16 @@ class getExperiment_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()
         oprot.writeFieldStop()
@@ -25693,22 +24215,28 @@ class getExperiment_result(object):
         return not (self == other)
 
 
-class getExperimentByAdmin_args(object):
+class getExperimentsInProject_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
+     - 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, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (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, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, projectId=None, limit=None, offset=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
+        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:
@@ -25727,7 +24255,17 @@ class getExperimentByAdmin_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.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:
@@ -25739,14 +24277,22 @@ 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('getExperimentsInProject_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.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)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -25754,8 +24300,12 @@ class getExperimentByAdmin_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!')
+        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):
@@ -25770,32 +24320,32 @@ class getExperimentByAdmin_args(object):
         return not (self == other)
 
 
-class getExperimentByAdmin_result(object):
+class getExperimentsInProject_result(object):
     """
     Attributes:
      - success
      - ire
-     - enf
      - ace
      - ase
+     - pnfe
      - ae
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.experiment.ttypes.ExperimentModel, airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), 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, '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
+        (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, enf=None, ace=None, ase=None, ae=None,):
+    def __init__(self, success=None, ire=None, ace=None, ase=None, pnfe=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):
@@ -25808,9 +24358,14 @@ 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.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:
@@ -25821,20 +24376,20 @@ class getExperimentByAdmin_result(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRUCT:
-                    self.enf = airavata.api.error.ttypes.ExperimentNotFoundException()
-                    self.enf.read(iprot)
+                    self.ace = airavata.api.error.ttypes.AiravataClientException()
+                    self.ace.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.ace = airavata.api.error.ttypes.AiravataClientException()
-                    self.ace.read(iprot)
+                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
+                    self.ase.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.ase = airavata.api.error.ttypes.AiravataSystemException()
-                    self.ase.read(iprot)
+                    self.pnfe = airavata.api.error.ttypes.ProjectNotFoundException()
+                    self.pnfe.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 5:
@@ -25852,27 +24407,30 @@ 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('getExperimentsInProject_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 iter98 in self.success:
+                iter98.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)
+            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.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)
@@ -25895,22 +24453,31 @@ class getExperimentByAdmin_result(object):
         return not (self == other)
 
 
-class getDetailedExperimentTree_args(object):
+class getUserExperiments_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
+     - 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, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (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, airavataExperimentId=None,):
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, limit=None, offset=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
+        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:
@@ -25929,7 +24496,22 @@ class getDetailedExperimentTree_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.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:
@@ -25941,14 +24523,26 @@ 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('getUserExperiments_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.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()
@@ -25956,8 +24550,14 @@ class getDetailedExperimentTree_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!')
+        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):
@@ -25972,30 +24572,27 @@ class getDetailedExperimentTree_args(object):
         return not (self == other)
 
 
-class getDetailedExperimentTree_result(object):
+class getUserExperiments_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
+        (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, '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, success=None, 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
@@ -26010,9 +24607,14 @@ class getDetailedExperimentTree_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.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()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -26023,23 +24625,17 @@ class getDetailedExperimentTree_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)
@@ -26054,29 +24650,28 @@ 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')
+        oprot.writeStructBegin('getUserExperiments_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 iter105 in self.success:
+                iter105.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)
+            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()
@@ -26097,24 +24692,24 @@ class getDetailedExperimentTree_result(object):
         return not (self == other)
 
 
-class updateExperiment_args(object):
+class createExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
+     - gatewayId
      - 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
+        (2, TType.STRING, 'gatewayId', '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, gatewayId=None, experiment=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
+        self.gatewayId = gatewayId
         self.experiment = experiment
 
     def read(self, iprot):
@@ -26134,7 +24729,7 @@ class updateExperiment_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.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
@@ -26152,14 +24747,14 @@ 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('createExperiment_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.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.experiment is not None:
             oprot.writeFieldBegin('experiment', TType.STRUCT, 3)
@@ -26171,8 +24766,8 @@ class updateExperiment_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!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         if self.experiment is None:
             raise TProtocolException(message='Required field experiment is unset!')
         return
@@ -26189,28 +24784,27 @@ class updateExperiment_args(object):
         return not (self == other)
 
 
-class updateExperiment_result(object):
+class createExperiment_result(object):
     """
     Attributes:
+     - success
      - ire
-     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        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
+        (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
@@ -26224,7 +24818,12 @@ class updateExperiment_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 1:
+            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 ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -26232,23 +24831,17 @@ class updateExperiment_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)
@@ -26263,25 +24856,25 @@ 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('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()
         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()
@@ -26302,25 +24895,22 @@ class updateExperiment_result(object):
         return not (self == other)
 
 
-class updateExperimentConfiguration_args(object):
+class deleteExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - airavataExperimentId
-     - userConfiguration
+     - 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, 'airavataExperimentId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'userConfiguration', (airavata.model.experiment.ttypes.UserConfigurationDataModel, airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'experimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,):
+    def __init__(self, authzToken=None, experimentId=None,):
         self.authzToken = authzToken
-        self.airavataExperimentId = airavataExperimentId
-        self.userConfiguration = userConfiguration
+        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:
@@ -26339,13 +24929,7 @@ class updateExperimentConfiguration_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()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.userConfiguration = airavata.model.experiment.ttypes.UserConfigurationDataModel()
-                    self.userConfiguration.read(iprot)
+                    self.experimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -26357,18 +24941,14 @@ 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('deleteExperiment_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.userConfiguration is not None:
-            oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3)
-            self.userConfiguration.write(oprot)
+        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()
@@ -26376,10 +24956,8 @@ class updateExperimentConfiguration_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!')
-        if self.userConfiguration is None:
-            raise TProtocolException(message='Required field userConfiguration is unset!')
+        if self.experimentId is None:
+            raise TProtocolException(message='Required field experimentId is unset!')
         return
 
     def __repr__(self):
@@ -26394,18 +24972,29 @@ class updateExperimentConfiguration_args(object):
         return not (self == other)
 
 
-class updateExperimentConfiguration_result(object):
+class deleteExperiment_result(object):
     """
     Attributes:
+     - success
+     - ire
+     - 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.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
     )
 
-    def __init__(self, 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.ae = ae
 
     def read(self, iprot):
@@ -26417,7 +25006,30 @@ class updateExperimentConfiguration_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)
+                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)
@@ -26432,9 +25044,25 @@ class updateExperimentConfiguration_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('updateExperimentConfiguration_result')
+        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()
         if self.ae is not None:
-            oprot.writeFieldBegin('ae', TType.STRUCT, 1)
+            oprot.writeFieldBegin('ae', TType.STRUCT, 4)
             self.ae.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
@@ -26455,25 +25083,22 @@ class updateExperimentConfiguration_result(object):
         return not (self == other)
 
 
-class updateResourceScheduleing_args(object):
+class getExperiment_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,):
+    def __init__(self, authzToken=None, airavataExperimentId=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:
@@ -26495,12 +25120,6 @@ class updateResourceScheduleing_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()
@@ -26510,7 +25129,7 @@ class updateResourceScheduleing_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('updateResourceScheduleing_args')
+        oprot.writeStructBegin('getExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -26519,10 +25138,6 @@ class updateResourceScheduleing_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()
 
@@ -26531,8 +25146,6 @@ class updateResourceScheduleing_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):
@@ -26547,18 +25160,32 @@ class updateResourceScheduleing_args(object):
         return not (self == other)
 
 
-class updateResourceScheduleing_result(object):
+class getExperiment_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.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
     )
 
-    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):
@@ -26570,7 +25197,37 @@ class updateResourceScheduleing_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.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 ftype == TType.STRUCT:
                     self.ae = airavata.api.error.ttypes.AuthorizationException()
                     self.ae.read(iprot)
@@ -26585,9 +25242,29 @@ 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('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()
         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()
@@ -26608,7 +25285,7 @@ class updateResourceScheduleing_result(object):
         return not (self == other)
 
 
-class validateExperiment_args(object):
+class getExperimentByAdmin_args(object):
     """
     Attributes:
      - authzToken
@@ -26654,7 +25331,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('getExperimentByAdmin_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -26685,7 +25362,7 @@ class validateExperiment_args(object):
         return not (self == other)
 
 
-class validateExperiment_result(object):
+class getExperimentByAdmin_result(object):
     """
     Attributes:
      - success
@@ -26697,7 +25374,7 @@ class validateExperiment_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, 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, '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
@@ -26723,8 +25400,9 @@ class validateExperiment_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.experiment.ttypes.ExperimentModel()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -26766,10 +25444,10 @@ 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('getExperimentByAdmin_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)
@@ -26809,25 +25487,22 @@ class validateExperiment_result(object):
         return not (self == other)
 
 
-class launchExperiment_args(object):
+class getDetailedExperimentTree_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,):
+    def __init__(self, authzToken=None, airavataExperimentId=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:
@@ -26849,11 +25524,6 @@ class launchExperiment_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()
@@ -26863,7 +25533,7 @@ class launchExperiment_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('launchExperiment_args')
+        oprot.writeStructBegin('getDetailedExperimentTree_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -26872,10 +25542,6 @@ class launchExperiment_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()
 
@@ -26884,8 +25550,6 @@ class launchExperiment_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):
@@ -26900,9 +25564,10 @@ class launchExperiment_args(object):
         return not (self == other)
 
 
-class launchExperiment_result(object):
+class getDetailedExperimentTree_result(object):
     """
     Attributes:
+     - success
      - ire
      - enf
      - ace
@@ -26911,7 +25576,7 @@ class launchExperiment_result(object):
     """
 
     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, '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
@@ -26919,7 +25584,8 @@ class launchExperiment_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
@@ -26935,7 +25601,13 @@ class launchExperiment_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.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)
@@ -26974,7 +25646,11 @@ class launchExperiment_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('launchExperiment_result')
+        oprot.writeStructBegin('getDetailedExperimentTree_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)
@@ -27013,22 +25689,25 @@ class launchExperiment_result(object):
         return not (self == other)
 
 
-class getExperimentStatus_args(object):
+class updateExperiment_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,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, experiment=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:
@@ -27050,6 +25729,12 @@ class getExperimentStatus_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()
@@ -27059,7 +25744,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('updateExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27068,6 +25753,10 @@ class getExperimentStatus_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()
 
@@ -27076,6 +25765,8 @@ class getExperimentStatus_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):
@@ -27090,10 +25781,9 @@ class getExperimentStatus_args(object):
         return not (self == other)
 
 
-class getExperimentStatus_result(object):
+class updateExperiment_result(object):
     """
     Attributes:
-     - success
      - ire
      - enf
      - ace
@@ -27102,7 +25792,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
+        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
@@ -27110,8 +25800,7 @@ class getExperimentStatus_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
@@ -27127,13 +25816,7 @@ class getExperimentStatus_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            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 fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -27172,11 +25855,7 @@ 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')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
-            oprot.writeFieldEnd()
+        oprot.writeStructBegin('updateExperiment_result')
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -27215,22 +25894,25 @@ class getExperimentStatus_result(object):
         return not (self == other)
 
 
-class getExperimentOutputs_args(object):
+class updateExperimentConfiguration_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,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=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:
@@ -27252,6 +25934,12 @@ class getExperimentOutputs_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()
@@ -27261,7 +25949,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('updateExperimentConfiguration_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27270,6 +25958,10 @@ class getExperimentOutputs_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()
 
@@ -27278,6 +25970,8 @@ class getExperimentOutputs_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):
@@ -27292,32 +25986,18 @@ class getExperimentOutputs_args(object):
         return not (self == other)
 
 
-class getExperimentOutputs_result(object):
+class updateExperimentConfiguration_result(object):
     """
     Attributes:
-     - success
-     - ire
-     - enf
-     - ace
-     - ase
      - ae
     """
 
     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
-        (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):
@@ -27329,42 +26009,7 @@ class getExperimentOutputs_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            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)
-            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)
@@ -27379,32 +26024,9 @@ 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')
-        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()
+        oprot.writeStructBegin('updateExperimentConfiguration_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()
@@ -27425,22 +26047,25 @@ class getExperimentOutputs_result(object):
         return not (self == other)
 
 
-class getIntermediateOutputs_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:
@@ -27462,6 +26087,12 @@ class getIntermediateOutputs_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()
@@ -27471,7 +26102,7 @@ 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('updateResourceScheduleing_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27480,6 +26111,10 @@ class getIntermediateOutputs_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()
 
@@ -27488,6 +26123,8 @@ class getIntermediateOutputs_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):
@@ -27502,32 +26139,18 @@ class getIntermediateOutputs_args(object):
         return not (self == other)
 
 
-class getIntermediateOutputs_result(object):
+class updateResourceScheduleing_result(object):
     """
     Attributes:
-     - success
-     - ire
-     - enf
-     - ace
-     - ase
      - ae
     """
 
     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
-        (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):
@@ -27539,42 +26162,7 @@ class getIntermediateOutputs_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             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()
-                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)
@@ -27589,32 +26177,9 @@ 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')
-        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.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()
@@ -27635,7 +26200,7 @@ class getIntermediateOutputs_result(object):
         return not (self == other)
 
 
-class getJobStatuses_args(object):
+class validateExperiment_args(object):
     """
     Attributes:
      - authzToken
@@ -27681,7 +26246,7 @@ 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('validateExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27712,7 +26277,7 @@ class getJobStatuses_args(object):
         return not (self == other)
 
 
-class getJobStatuses_result(object):
+class validateExperiment_result(object):
     """
     Attributes:
      - success
@@ -27724,7 +26289,7 @@ class getJobStatuses_result(object):
     """
 
     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.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
@@ -27750,15 +26315,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.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -27800,14 +26358,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('validateExperiment_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.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -27847,22 +26401,25 @@ class getJobStatuses_result(object):
         return not (self == other)
 
 
-class getJobDetails_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:
@@ -27884,6 +26441,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()
@@ -27893,7 +26455,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('launchExperiment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -27902,6 +26464,10 @@ 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()
 
@@ -27910,6 +26476,8 @@ class getJobDetails_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):
@@ -27924,10 +26492,9 @@ class getJobDetails_args(object):
         return not (self == other)
 
 
-class getJobDetails_result(object):
+class launchExperiment_result(object):
     """
     Attributes:
-     - success
      - ire
      - enf
      - ace
@@ -27936,7 +26503,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
@@ -27944,8 +26511,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
@@ -27961,18 +26527,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)
@@ -28011,14 +26566,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('launchExperiment_result')
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -28057,28 +26605,22 @@ class getJobDetails_result(object):
         return not (self == other)
 
 
-class cloneExperiment_args(object):
+class getExperimentStatus_args(object):
     """
     Attributes:
      - authzToken
-     - existingExperimentID
-     - newExperimentName
-     - newExperimentProjectId
+     - 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, 'existingExperimentID', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'newExperimentName', 'UTF8', None, ),  # 3
-        (4, TType.STRING, 'newExperimentProjectId', 'UTF8', None, ),  # 4
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.existingExperimentID = existingExperimentID
-        self.newExperimentName = newExperimentName
-        self.newExperimentProjectId = newExperimentProjectId
+        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:
@@ -28097,17 +26639,7 @@ 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()
-                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.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -28119,22 +26651,14 @@ 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('getExperimentStatus_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.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()
@@ -28142,6 +26666,8 @@ class cloneExperiment_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):
@@ -28156,7 +26682,7 @@ class cloneExperiment_args(object):
         return not (self == other)
 
 
-class cloneExperiment_result(object):
+class getExperimentStatus_result(object):
     """
     Attributes:
      - success
@@ -28165,27 +26691,24 @@ class cloneExperiment_result(object):
      - ace
      - ase
      - ae
-     - pnfe
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', 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
         (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, pnfe=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
-        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:
@@ -28197,8 +26720,9 @@ class cloneExperiment_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.status.ttypes.ExperimentStatus()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -28231,12 +26755,6 @@ class cloneExperiment_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()
@@ -28246,10 +26764,10 @@ 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('getExperimentStatus_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)
@@ -28271,10 +26789,6 @@ class cloneExperiment_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()
 
@@ -28293,28 +26807,22 @@ class cloneExperiment_result(object):
         return not (self == other)
 
 
-class cloneExperimentByAdmin_args(object):
+class getExperimentOutputs_args(object):
     """
     Attributes:
      - authzToken
-     - existingExperimentID
-     - newExperimentName
-     - newExperimentProjectId
+     - 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, 'existingExperimentID', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'newExperimentName', 'UTF8', None, ),  # 3
-        (4, TType.STRING, 'newExperimentProjectId', 'UTF8', None, ),  # 4
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.existingExperimentID = existingExperimentID
-        self.newExperimentName = newExperimentName
-        self.newExperimentProjectId = newExperimentProjectId
+        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:
@@ -28333,17 +26841,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.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -28355,22 +26853,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('getExperimentOutputs_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.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()
@@ -28378,6 +26868,8 @@ class cloneExperimentByAdmin_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):
@@ -28392,7 +26884,7 @@ class cloneExperimentByAdmin_args(object):
         return not (self == other)
 
 
-class cloneExperimentByAdmin_result(object):
+class getExperimentOutputs_result(object):
     """
     Attributes:
      - success
@@ -28401,27 +26893,24 @@ class cloneExperimentByAdmin_result(object):
      - ace
      - ase
      - ae
-     - pnfe
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', 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
         (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, pnfe=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
-        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:
@@ -28433,8 +26922,14 @@ 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.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)
             elif fid == 1:
@@ -28467,12 +26962,6 @@ class cloneExperimentByAdmin_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()
@@ -28482,10 +26971,13 @@ 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('getExperimentOutputs_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 iter112 in self.success:
+                iter112.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -28507,10 +26999,6 @@ class cloneExperimentByAdmin_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()
 
@@ -28529,25 +27017,22 @@ class cloneExperimentByAdmin_result(object):
         return not (self == other)
 
 
-class terminateExperiment_args(object):
+class getIntermediateOutputs_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,):
+    def __init__(self, authzToken=None, airavataExperimentId=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:
@@ -28569,11 +27054,6 @@ class terminateExperiment_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()
@@ -28583,7 +27063,7 @@ 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('getIntermediateOutputs_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -28592,16 +27072,14 @@ class terminateExperiment_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):
@@ -28616,9 +27094,10 @@ class terminateExperiment_args(object):
         return not (self == other)
 
 
-class terminateExperiment_result(object):
+class getIntermediateOutputs_result(object):
     """
     Attributes:
+     - success
      - ire
      - enf
      - ace
@@ -28627,7 +27106,7 @@ class terminateExperiment_result(object):
     """
 
     thrift_spec = (
-        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
@@ -28635,7 +27114,8 @@ class terminateExperiment_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
@@ -28651,7 +27131,18 @@ class terminateExperiment_result(object):
             (fname, ftype, fid) = iprot.readFieldBegin()
             if ftype == TType.STOP:
                 break
-            if fid == 1:
+            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()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -28690,7 +27181,14 @@ 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('getIntermediateOutputs_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.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -28729,25 +27227,22 @@ class terminateExperiment_result(object):
         return not (self == other)
 
 
-class registerApplicationModule_args(object):
+class getJobStatuses_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - applicationModule
+     - 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.STRUCT, 'applicationModule', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 3
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, applicationModule=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.applicationModule = applicationModule
+        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:
@@ -28766,13 +27261,7 @@ class registerApplicationModule_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.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                    self.applicationModule.read(iprot)
+                    self.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -28784,18 +27273,14 @@ 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('getJobStatuses_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.applicationModule is not None:
-            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
-            self.applicationModule.write(oprot)
+        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()
@@ -28803,10 +27288,8 @@ class registerApplicationModule_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!')
+        if self.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -28821,27 +27304,30 @@ class registerApplicationModule_args(object):
         return not (self == other)
 
 
-class registerApplicationModule_result(object):
+class getJobStatuses_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', 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, '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
@@ -28856,8 +27342,15 @@ 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.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:
@@ -28868,17 +27361,23 @@ class registerApplicationModule_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)
@@ -28893,25 +27392,33 @@ 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('getJobStatuses_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.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)
             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()
@@ -28932,22 +27439,22 @@ class registerApplicationModule_result(object):
         return not (self == other)
 
 
-class getApplicationModule_args(object):
+class getJobDetails_args(object):
     """
     Attributes:
      - authzToken
-     - appModuleId
+     - 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, 'appModuleId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appModuleId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None,):
         self.authzToken = authzToken
-        self.appModuleId = appModuleId
+        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:
@@ -28966,7 +27473,7 @@ 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.airavataExperimentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -28978,14 +27485,14 @@ 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('getJobDetails_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.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()
@@ -28993,8 +27500,8 @@ 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.airavataExperimentId is None:
+            raise TProtocolException(message='Required field airavataExperimentId is unset!')
         return
 
     def __repr__(self):
@@ -29009,27 +27516,30 @@ class getApplicationModule_args(object):
         return not (self == other)
 
 
-class getApplicationModule_result(object):
+class getJobDetails_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
      - ae
     """
 
     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.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, '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
@@ -29044,9 +27554,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 = []
+                    (_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:
@@ -29057,17 +27572,23 @@ class getApplicationModule_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)
@@ -29082,25 +27603,32 @@ 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('getJobDetails_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 iter135 in self.success:
+                iter135.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, 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()
@@ -29121,25 +27649,28 @@ class getApplicationModule_result(object):
         return not (self == other)
 
 
-class updateApplicationModule_args(object):
+class cloneExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - appModuleId
-     - applicationModule
+     - 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, 'appModuleId', 'UTF8', None, ),  # 2
-        (3, TType.STRUCT, 'applicationModule', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule, airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule.thrift_spec), None, ),  # 3
+        (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, appModuleId=None, applicationModule=None,):
+    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
         self.authzToken = authzToken
-        self.appModuleId = appModuleId
-        self.applicationModule = applicationModule
+        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:
@@ -29158,13 +27689,17 @@ class updateApplicationModule_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.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.STRUCT:
-                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
-                    self.applicationModule.read(iprot)
+                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:
@@ -29176,18 +27711,22 @@ 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('cloneExperiment_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.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.applicationModule is not None:
-            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
-            self.applicationModule.write(oprot)
+        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()
@@ -29195,10 +27734,6 @@ class updateApplicationModule_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):
@@ -29213,30 +27748,36 @@ class updateApplicationModule_args(object):
         return not (self == other)
 
 
-class updateApplicationModule_result(object):
+class cloneExperiment_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
      - ae
+     - pnfe
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, 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
-        (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
+        (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, 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:
@@ -29248,8 +27789,8 @@ class updateApplicationModule_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                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:
@@ -29260,22 +27801,34 @@ class updateApplicationModule_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)
                 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()
@@ -29285,27 +27838,35 @@ 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('cloneExperiment_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            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)
             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()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 6)
+            self.pnfe.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -29324,22 +27885,28 @@ class updateApplicationModule_result(object):
         return not (self == other)
 
 
-class getAllAppModules_args(object):
+class cloneExperimentByAdmin_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
+     - 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, 'gatewayId', '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, gatewayId=None,):
+    def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
+        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:
@@ -29358,7 +27925,17 @@ class getAllAppModules_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.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:
@@ -29370,14 +27947,22 @@ 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('cloneExperimentByAdmin_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.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()
@@ -29385,8 +27970,6 @@ class getAllAppModules_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!')
         return
 
     def __repr__(self):
@@ -29401,30 +27984,36 @@ class getAllAppModules_args(object):
         return not (self == other)
 
 
-class getAllAppModules_result(object):
+class cloneExperimentByAdmin_result(object):
     """
     Attributes:
      - success
      - ire
+     - enf
      - ace
      - ase
      - ae
+     - pnfe
     """
 
     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
-        (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
+        (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, 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:
@@ -29436,14 +28025,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:
@@ -29454,22 +28037,34 @@ class getAllAppModules_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)
                 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()
@@ -29479,30 +28074,35 @@ 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('cloneExperimentByAdmin_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)
             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()
+        if self.pnfe is not None:
+            oprot.writeFieldBegin('pnfe', TType.STRUCT, 6)
+            self.pnfe.write(oprot)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -29521,22 +28121,25 @@ class getAllAppModules_result(object):
         return not (self == other)
 
 
-class deleteApplicationModule_args(object):
+class terminateExperiment_args(object):
     """
     Attributes:
      - authzToken
-     - appModuleId
+     - 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, 'appModuleId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'airavataExperimentId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, appModuleId=None,):
+    def __init__(self, authzToken=None, airavataExperimentId=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.appModuleId = appModuleId
+        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:
@@ -29555,7 +28158,12 @@ 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.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:
@@ -29567,14 +28175,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('terminateExperiment_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.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()
@@ -29582,8 +28194,6 @@ 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!')
         return
 
     def __repr__(self):
@@ -29598,27 +28208,28 @@ class deleteApplicationModule_args(object):
         return not (self == other)
 
 
-class deleteApplicationModule_result(object):
+class terminateExperiment_result(object):
     """
     Attributes:
-     - success
      - ire
+     - enf
      - ace
      - ase
      - ae
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, 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
@@ -29632,12 +28243,7 @@ class deleteApplicationModule_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 fid == 1:
                 if ftype == TType.STRUCT:
                     self.ire = airavata.api.error.ttypes.InvalidRequestException()
                     self.ire.read(iprot)
@@ -29645,17 +28251,23 @@ class deleteApplicationModule_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)
@@ -29670,25 +28282,25 @@ 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')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
-            oprot.writeFieldEnd()
+        oprot.writeStructBegin('terminateExperiment_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()
@@ -29709,25 +28321,25 @@ class deleteApplicationModule_result(object):
         return not (self == other)
 
 
-class registerApplicationDeployment_args(object):
+class registerApplicationModule_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
-     - applicationDeployment
+     - 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, 'applicationDeployment', (airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription, airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription.thrift_spec), None, ),  # 3
+        (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, applicationDeployment=None,):
+    def __init__(self, authzToken=None, gatewayId=None, applicationModule=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
-        self.applicationDeployment = applicationDeployment
+        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:
@@ -29751,8 +28363,8 @@ class registerApplicationDeployment_args(object):
                     iprot.skip(ftype)
             elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                    self.applicationDeployment.read(iprot)
+                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                    self.applicationModule.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -29764,7 +28376,7 @@ 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('registerApplicationModule_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -29773,9 +28385,9 @@ class registerApplicationDeployment_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)
+        if self.applicationModule is not None:
+            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
+            self.applicationModule.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -29785,8 +28397,8 @@ class registerApplicationDeployment_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!')
+        if self.applicationModule is None:
+            raise TProtocolException(message='Required field applicationModule is unset!')
         return
 
     def __repr__(self):
@@ -29801,7 +28413,7 @@ class registerApplicationDeployment_args(object):
         return not (self == other)
 
 
-class registerApplicationDeployment_result(object):
+class registerApplicationModule_result(object):
     """
     Attributes:
      - success
@@ -29873,7 +28485,7 @@ 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('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)
@@ -29912,22 +28524,22 @@ class registerApplicationDeployment_result(object):
         return not (self == other)
 
 
-class getApplicationDeployment_args(object):
+class getApplicationModule_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:
@@ -29946,7 +28558,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.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -29958,14 +28570,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('getApplicationModule_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()
@@ -29973,8 +28585,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.appModuleId is None:
+            raise TProtocolException(message='Required field appModuleId is unset!')
         return
 
     def __repr__(self):
@@ -29989,7 +28601,7 @@ class getApplicationDeployment_args(object):
         return not (self == other)
 
 
-class getApplicationDeployment_result(object):
+class getApplicationModule_result(object):
     """
     Attributes:
      - success
@@ -30000,7 +28612,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.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, '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
@@ -30025,7 +28637,7 @@ class getApplicationDeployment_result(object):
                 break
             if fid == 0:
                 if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
                     self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
@@ -30062,7 +28674,7 @@ 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('getApplicationModule_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRUCT, 0)
             self.success.write(oprot)
@@ -30101,25 +28713,25 @@ class getApplicationDeployment_result(object):
         return not (self == other)
 
 
-class updateApplicationDeployment_args(object):
+class updateApplicationModule_args(object):
     """
     Attributes:
      - authzToken
-     - appDeploymentId
-     - applicationDeployment
+     - 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, '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, '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, appDeploymentId=None, applicationDeployment=None,):
+    def __init__(self, authzToken=None, appModuleId=None, applicationModule=None,):
         self.authzToken = authzToken
-        self.appDeploymentId = appDeploymentId
-        self.applicationDeployment = applicationDeployment
+        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:
@@ -30138,13 +28750,13 @@ 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.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.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                    self.applicationDeployment.read(iprot)
+                    self.applicationModule = airavata.model.appcatalog.appdeployment.ttypes.ApplicationModule()
+                    self.applicationModule.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -30156,208 +28768,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('updateApplicationModule_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)
-            oprot.writeFieldEnd()
-        if self.applicationDeployment is not None:
-            oprot.writeFieldBegin('applicationDeployment', TType.STRUCT, 3)
-            self.applicationDeployment.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.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):
-        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 updateApplicationDeployment_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
-    )
-
-    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.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.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('updateApplicationDeployment_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.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 deleteApplicationDeployment_args(object):
-    """
-    Attributes:
-     - authzToken
-     - 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, 'appDeploymentId', 'UTF8', None, ),  # 2
-    )
-
-    def __init__(self, authzToken=None, appDeploymentId=None,):
-        self.authzToken = authzToken
-        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:
-            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.appDeploymentId = 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('deleteApplicationDeployment_args')
-        if self.authzToken is not None:
-            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
-            self.authzToken.write(oprot)
+        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.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.applicationModule is not None:
+            oprot.writeFieldBegin('applicationModule', TType.STRUCT, 3)
+            self.applicationModule.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -30365,8 +28787,10 @@ 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!')
+        if self.applicationModule is None:
+            raise TProtocolException(message='Required field applicationModule is unset!')
         return
 
     def __repr__(self):
@@ -30381,7 +28805,7 @@ class deleteApplicationDeployment_args(object):
         return not (self == other)
 
 
-class deleteApplicationDeployment_result(object):
+class updateApplicationModule_result(object):
     """
     Attributes:
      - success
@@ -30453,7 +28877,7 @@ 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('updateApplicationModule_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -30492,7 +28916,7 @@ class deleteApplicationDeployment_result(object):
         return not (self == other)
 
 
-class getAllApplicationDeployments_args(object):
+class getAllAppModules_args(object):
     """
     Attributes:
      - authzToken
@@ -30538,7 +28962,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('getAllAppModules_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -30569,7 +28993,7 @@ class getAllApplicationDeployments_args(object):
         return not (self == other)
 
 
-class getAllApplicationDeployments_result(object):
+class getAllAppModules_result(object):
     """
     Attributes:
      - success
@@ -30580,7 +29004,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.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
@@ -30606,11 +29030,11 @@ class getAllApplicationDeployments_result(object):
             if fid == 0:
                 if ftype == TType.LIST:
                     self.success = []
-                    (_etype146, _size143) = iprot.readListBegin()
-                    for _i147 in range(_size143):
-                        _elem148 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
-                        _elem148.read(iprot)
-                        self.success.append(_elem148)
+                    (_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)
@@ -30647,12 +29071,12 @@ 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('getAllAppModules_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)
+            for iter142 in self.success:
+                iter142.write(oprot)
             oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
@@ -30689,7 +29113,7 @@ class getAllApplicationDeployments_result(object):
         return not (self == other)
 
 
-class getAppModuleDeployedResources_args(object):
+class deleteApplicationModule_args(object):
     """
     Attributes:
      - authzToken
@@ -30735,7 +29159,7 @@ 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('deleteApplicationModule_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -30766,7 +29190,7 @@ class getAppModuleDeployedResources_args(object):
         return not (self == other)
 
 
-class getAppModuleDeployedResources_result(object):
+class deleteApplicationModule_result(object):
     """
     Attributes:
      - success
@@ -30777,7 +29201,7 @@ class getAppModuleDeployedResources_result(object):
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRING, 'UTF8', 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
@@ -30801,13 +29225,8 @@ class getAppModuleDeployedResources_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 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success.append(_elem155)
-                    iprot.readListEnd()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -30843,13 +29262,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('deleteApplicationModule_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRING, len(self.success))
-            for iter156 in self.success:
-                oprot.writeString(iter156.encode('utf-8') if sys.version_info[0] == 2 else iter156)
-            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)
@@ -30885,25 +29301,25 @@ class getAppModuleDeployedResources_result(object):
         return not (self == other)
 
 
-class registerApplicationInterface_args(object):
+class registerApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
-     - applicationInterface
+     - 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, 'applicationInterface', (airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription, airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription.thrift_spec), None, ),  # 3
+        (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, applicationInterface=None,):
+    def __init__(self, authzToken=None, gatewayId=None, applicationDeployment=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
-        self.applicationInterface = applicationInterface
+        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:
@@ -30927,8 +29343,8 @@ class registerApplicationInterface_args(object):
                     iprot.skip(ftype)
             elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.applicationInterface = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
-                    self.applicationInterface.read(iprot)
+                    self.applicationDeployment = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                    self.applicationDeployment.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -30940,7 +29356,7 @@ 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('registerApplicationDeployment_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -30949,9 +29365,9 @@ class registerApplicationInterface_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)
+        if self.applicationDeployment is not None:
+            oprot.writeFieldBegin('applicationDeployment', TType.STRUCT, 3)
+            self.applicationDeployment.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -30961,8 +29377,8 @@ class registerApplicationInterface_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!')
+        if self.applicationDeployment is None:
+            raise TProtocolException(message='Required field applicationDeployment is unset!')
         return
 
     def __repr__(self):
@@ -30977,7 +29393,7 @@ class registerApplicationInterface_args(object):
         return not (self == other)
 
 
-class registerApplicationInterface_result(object):
+class registerApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -31049,7 +29465,7 @@ 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('registerApplicationDeployment_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)
@@ -31088,28 +29504,22 @@ class registerApplicationInterface_result(object):
         return not (self == other)
 
 
-class cloneApplicationInterface_args(object):
+class getApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
-     - existingAppInterfaceID
-     - newApplicationName
-     - gatewayId
+     - 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, 'existingAppInterfaceID', 'UTF8', None, ),  # 2
-        (3, TType.STRING, 'newApplicationName', 'UTF8', None, ),  # 3
-        (4, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 4
+        (2, TType.STRING, 'appDeploymentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, existingAppInterfaceID=None, newApplicationName=None, gatewayId=None,):
+    def __init__(self, authzToken=None, appDeploymentId=None,):
         self.authzToken = authzToken
-        self.existingAppInterfaceID = existingAppInterfaceID
-        self.newApplicationName = newApplicationName
-        self.gatewayId = gatewayId
+        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:
@@ -31128,17 +29538,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.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31150,22 +29550,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('getApplicationDeployment_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.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()
@@ -31173,6 +29565,8 @@ class cloneApplicationInterface_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!')
         return
 
     def __repr__(self):
@@ -31187,7 +29581,7 @@ class cloneApplicationInterface_args(object):
         return not (self == other)
 
 
-class cloneApplicationInterface_result(object):
+class getApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -31198,7 +29592,7 @@ class cloneApplicationInterface_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', 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
@@ -31222,8 +29616,9 @@ 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.STRUCT:
+                    self.success = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31259,10 +29654,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('getApplicationDeployment_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)
@@ -31298,22 +29693,25 @@ class cloneApplicationInterface_result(object):
         return not (self == other)
 
 
-class getApplicationInterface_args(object):
+class updateApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
+     - 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, 'appInterfaceId', '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, appInterfaceId=None,):
+    def __init__(self, authzToken=None, appDeploymentId=None, applicationDeployment=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
+        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:
@@ -31332,7 +29730,13 @@ 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.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:
@@ -31344,14 +29748,18 @@ 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('updateApplicationDeployment_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.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()
@@ -31359,8 +29767,10 @@ 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.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):
@@ -31375,7 +29785,7 @@ class getApplicationInterface_args(object):
         return not (self == other)
 
 
-class getApplicationInterface_result(object):
+class updateApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -31386,7 +29796,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.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
@@ -31410,9 +29820,8 @@ 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.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31448,10 +29857,10 @@ 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('updateApplicationDeployment_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)
@@ -31487,25 +29896,22 @@ class getApplicationInterface_result(object):
         return not (self == other)
 
 
-class updateApplicationInterface_args(object):
+class deleteApplicationDeployment_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
-     - applicationInterface
+     - 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, '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, 'appDeploymentId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None, applicationInterface=None,):
+    def __init__(self, authzToken=None, appDeploymentId=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
-        self.applicationInterface = applicationInterface
+        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:
@@ -31524,13 +29930,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.appDeploymentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31542,18 +29942,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('deleteApplicationDeployment_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.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()
@@ -31561,10 +29957,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.appDeploymentId is None:
+            raise TProtocolException(message='Required field appDeploymentId is unset!')
         return
 
     def __repr__(self):
@@ -31579,7 +29973,7 @@ class updateApplicationInterface_args(object):
         return not (self == other)
 
 
-class updateApplicationInterface_result(object):
+class deleteApplicationDeployment_result(object):
     """
     Attributes:
      - success
@@ -31651,7 +30045,7 @@ 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('deleteApplicationDeployment_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -31690,22 +30084,22 @@ class updateApplicationInterface_result(object):
         return not (self == other)
 
 
-class deleteApplicationInterface_args(object):
+class getAllApplicationDeployments_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:
@@ -31724,7 +30118,7 @@ class deleteApplicationInterface_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:
@@ -31736,14 +30130,14 @@ 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('getAllApplicationDeployments_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()
@@ -31751,8 +30145,8 @@ class deleteApplicationInterface_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):
@@ -31767,7 +30161,7 @@ class deleteApplicationInterface_args(object):
         return not (self == other)
 
 
-class deleteApplicationInterface_result(object):
+class getAllApplicationDeployments_result(object):
     """
     Attributes:
      - success
@@ -31778,7 +30172,7 @@ class deleteApplicationInterface_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
@@ -31802,8 +30196,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 = []
+                    (_etype146, _size143) = iprot.readListBegin()
+                    for _i147 in range(_size143):
+                        _elem148 = airavata.model.appcatalog.appdeployment.ttypes.ApplicationDeploymentDescription()
+                        _elem148.read(iprot)
+                        self.success.append(_elem148)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -31839,10 +30239,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('getAllApplicationDeployments_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 iter149 in self.success:
+                iter149.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -31878,22 +30281,22 @@ class deleteApplicationInterface_result(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaceNames_args(object):
+class getAppModuleDeployedResources_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
+     - 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, 'gatewayId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appModuleId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, appModuleId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
+        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:
@@ -31912,7 +30315,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.appModuleId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -31924,14 +30327,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('getAppModuleDeployedResources_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.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()
@@ -31939,8 +30342,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.appModuleId is None:
+            raise TProtocolException(message='Required field appModuleId is unset!')
         return
 
     def __repr__(self):
@@ -31955,7 +30358,7 @@ class getAllApplicationInterfaceNames_args(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaceNames_result(object):
+class getAppModuleDeployedResources_result(object):
     """
     Attributes:
      - success
@@ -31966,7 +30369,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.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
@@ -31990,14 +30393,13 @@ class getAllApplicationInterfaceNames_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype158, _vtype159, _size157) = iprot.readMapBegin()
-                    for _i161 in range(_size157):
-                        _key162 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val163 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key162] = _val163
-                    iprot.readMapEnd()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype153, _size150) = iprot.readListBegin()
+                    for _i154 in range(_size150):
+                        _elem155 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success.append(_elem155)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32033,14 +30435,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('getAppModuleDeployedResources_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter164, viter165 in self.success.items():
-                oprot.writeString(kiter164.encode('utf-8') if sys.version_info[0] == 2 else kiter164)
-                oprot.writeString(viter165.encode('utf-8') if sys.version_info[0] == 2 else viter165)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRING, len(self.success))
+            for iter156 in self.success:
+                oprot.writeString(iter156.encode('utf-8') if sys.version_info[0] == 2 else iter156)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32076,22 +30477,25 @@ class getAllApplicationInterfaceNames_result(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaces_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:
@@ -32113,6 +30517,12 @@ class getAllApplicationInterfaces_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()
@@ -32122,7 +30532,7 @@ 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('registerApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -32131,6 +30541,10 @@ class getAllApplicationInterfaces_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()
 
@@ -32139,6 +30553,8 @@ class getAllApplicationInterfaces_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):
@@ -32153,7 +30569,7 @@ class getAllApplicationInterfaces_args(object):
         return not (self == other)
 
 
-class getAllApplicationInterfaces_result(object):
+class registerApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32164,7 +30580,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.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
@@ -32188,14 +30604,8 @@ class getAllApplicationInterfaces_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype169, _size166) = iprot.readListBegin()
-                    for _i170 in range(_size166):
-                        _elem171 = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
-                        _elem171.read(iprot)
-                        self.success.append(_elem171)
-                    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:
@@ -32231,13 +30641,10 @@ 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('registerApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter172 in self.success:
-                iter172.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)
@@ -32273,22 +30680,28 @@ class getAllApplicationInterfaces_result(object):
         return not (self == other)
 
 
-class getApplicationInputs_args(object):
+class cloneApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
-     - appInterfaceId
+     - existingAppInterfaceID
+     - newApplicationName
+     - 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, 'existingAppInterfaceID', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'newApplicationName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, appInterfaceId=None,):
+    def __init__(self, authzToken=None, existingAppInterfaceID=None, newApplicationName=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.appInterfaceId = appInterfaceId
+        self.existingAppInterfaceID = existingAppInterfaceID
+        self.newApplicationName = newApplicationName
+        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:
@@ -32307,7 +30720,17 @@ class getApplicationInputs_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.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()
                 else:
                     iprot.skip(ftype)
             else:
@@ -32319,14 +30742,22 @@ 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('cloneApplicationInterface_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.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)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -32334,8 +30765,6 @@ 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!')
         return
 
     def __repr__(self):
@@ -32350,7 +30779,7 @@ class getApplicationInputs_args(object):
         return not (self == other)
 
 
-class getApplicationInputs_result(object):
+class cloneApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32361,7 +30790,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
@@ -32385,14 +30814,8 @@ class getApplicationInputs_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype176, _size173) = iprot.readListBegin()
-                    for _i177 in range(_size173):
-                        _elem178 = airavata.model.application.io.ttypes.InputDataObjectType()
-                        _elem178.read(iprot)
-                        self.success.append(_elem178)
-                    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:
@@ -32428,13 +30851,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('cloneApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter179 in self.success:
-                iter179.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)
@@ -32470,7 +30890,7 @@ class getApplicationInputs_result(object):
         return not (self == other)
 
 
-class getApplicationOutputs_args(object):
+class getApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
@@ -32516,7 +30936,7 @@ 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('getApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -32547,7 +30967,7 @@ class getApplicationOutputs_args(object):
         return not (self == other)
 
 
-class getApplicationOutputs_result(object):
+class getApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32558,7 +30978,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.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
@@ -32582,14 +31002,9 @@ class getApplicationOutputs_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.application.io.ttypes.OutputDataObjectType()
-                        _elem185.read(iprot)
-                        self.success.append(_elem185)
-                    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:
@@ -32625,13 +31040,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('getApplicationInterface_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.STRUCT, 0)
+            self.success.write(oprot)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32667,22 +31079,25 @@ class getApplicationOutputs_result(object):
         return not (self == other)
 
 
-class getAvailableAppInterfaceComputeResources_args(object):
+class updateApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
      - 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, '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, appInterfaceId=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None, applicationInterface=None,):
         self.authzToken = authzToken
         self.appInterfaceId = appInterfaceId
+        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:
@@ -32704,6 +31119,12 @@ class getAvailableAppInterfaceComputeResources_args(object):
                     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)
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -32713,7 +31134,7 @@ 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('updateApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -32722,6 +31143,10 @@ class getAvailableAppInterfaceComputeResources_args(object):
             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)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -32730,6 +31155,8 @@ class getAvailableAppInterfaceComputeResources_args(object):
             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!')
         return
 
     def __repr__(self):
@@ -32744,7 +31171,7 @@ class getAvailableAppInterfaceComputeResources_args(object):
         return not (self == other)
 
 
-class getAvailableAppInterfaceComputeResources_result(object):
+class updateApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32755,7 +31182,7 @@ class getAvailableAppInterfaceComputeResources_result(object):
     """
 
     thrift_spec = (
-        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', 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
@@ -32779,14 +31206,8 @@ class getAvailableAppInterfaceComputeResources_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype188, _vtype189, _size187) = iprot.readMapBegin()
-                    for _i191 in range(_size187):
-                        _key192 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val193 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key192] = _val193
-                    iprot.readMapEnd()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -32822,14 +31243,10 @@ 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('updateApplicationInterface_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter194, viter195 in self.success.items():
-                oprot.writeString(kiter194.encode('utf-8') if sys.version_info[0] == 2 else kiter194)
-                oprot.writeString(viter195.encode('utf-8') if sys.version_info[0] == 2 else viter195)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.BOOL, 0)
+            oprot.writeBool(self.success)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -32865,22 +31282,22 @@ class getAvailableAppInterfaceComputeResources_result(object):
         return not (self == other)
 
 
-class registerComputeResource_args(object):
+class deleteApplicationInterface_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceDescription
+     - 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.STRUCT, 'computeResourceDescription', (airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription, airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription.thrift_spec), None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, computeResourceDescription=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.computeResourceDescription = computeResourceDescription
+        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:
@@ -32898,9 +31315,8 @@ class registerComputeResource_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
-                if ftype == TType.STRUCT:
-                    self.computeResourceDescription = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
-                    self.computeResourceDescription.read(iprot)
+                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:
@@ -32912,14 +31328,14 @@ 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('deleteApplicationInterface_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.computeResourceDescription is not None:
-            oprot.writeFieldBegin('computeResourceDescription', TType.STRUCT, 2)
-            self.computeResourceDescription.write(oprot)
+        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()
@@ -32927,8 +31343,8 @@ class registerComputeResource_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.computeResourceDescription is None:
-            raise TProtocolException(message='Required field computeResourceDescription is unset!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -32943,7 +31359,7 @@ class registerComputeResource_args(object):
         return not (self == other)
 
 
-class registerComputeResource_result(object):
+class deleteApplicationInterface_result(object):
     """
     Attributes:
      - success
@@ -32954,7 +31370,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
@@ -32978,8 +31394,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:
@@ -33015,10 +31431,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('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)
@@ -33054,22 +31470,22 @@ class registerComputeResource_result(object):
         return not (self == other)
 
 
-class getComputeResource_args(object):
+class getAllApplicationInterfaceNames_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceId
+     - 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, 'computeResourceId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, computeResourceId=None,):
+    def __init__(self, authzToken=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.computeResourceId = computeResourceId
+        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:
@@ -33088,7 +31504,7 @@ class getComputeResource_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()
+                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -33100,14 +31516,14 @@ 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('getAllApplicationInterfaceNames_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)
+        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()
@@ -33115,8 +31531,8 @@ class getComputeResource_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.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -33131,7 +31547,7 @@ class getComputeResource_args(object):
         return not (self == other)
 
 
-class getComputeResource_result(object):
+class getAllApplicationInterfaceNames_result(object):
     """
     Attributes:
      - success
@@ -33142,7 +31558,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.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
@@ -33166,9 +31582,14 @@ 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.MAP:
+                    self.success = {}
+                    (_ktype158, _vtype159, _size157) = iprot.readMapBegin()
+                    for _i161 in range(_size157):
+                        _key162 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val163 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key162] = _val163
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33204,10 +31625,14 @@ 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('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 kiter164, viter165 in self.success.items():
+                oprot.writeString(kiter164.encode('utf-8') if sys.version_info[0] == 2 else kiter164)
+                oprot.writeString(viter165.encode('utf-8') if sys.version_info[0] == 2 else viter165)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33243,19 +31668,22 @@ class getComputeResource_result(object):
         return not (self == other)
 
 
-class getAllComputeResourceNames_args(object):
+class getAllApplicationInterfaces_args(object):
     """
     Attributes:
      - authzToken
+     - 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, 'gatewayId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None,):
+    def __init__(self, authzToken=None, gatewayId=None,):
         self.authzToken = authzToken
+        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:
@@ -33272,6 +31700,11 @@ class getAllComputeResourceNames_args(object):
                     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)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -33281,17 +31714,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('getAllApplicationInterfaces_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()
         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!')
         return
 
     def __repr__(self):
@@ -33306,7 +31745,7 @@ class getAllComputeResourceNames_args(object):
         return not (self == other)
 
 
-class getAllComputeResourceNames_result(object):
+class getAllApplicationInterfaces_result(object):
     """
     Attributes:
      - success
@@ -33317,7 +31756,7 @@ class getAllComputeResourceNames_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.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
@@ -33341,14 +31780,14 @@ class getAllComputeResourceNames_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype197, _vtype198, _size196) = iprot.readMapBegin()
-                    for _i200 in range(_size196):
-                        _key201 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val202 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key201] = _val202
-                    iprot.readMapEnd()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype169, _size166) = iprot.readListBegin()
+                    for _i170 in range(_size166):
+                        _elem171 = airavata.model.appcatalog.appinterface.ttypes.ApplicationInterfaceDescription()
+                        _elem171.read(iprot)
+                        self.success.append(_elem171)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33384,14 +31823,13 @@ 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('getAllApplicationInterfaces_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter203, viter204 in self.success.items():
-                oprot.writeString(kiter203.encode('utf-8') if sys.version_info[0] == 2 else kiter203)
-                oprot.writeString(viter204.encode('utf-8') if sys.version_info[0] == 2 else viter204)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter172 in self.success:
+                iter172.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33427,25 +31865,22 @@ class getAllComputeResourceNames_result(object):
         return not (self == other)
 
 
-class updateComputeResource_args(object):
+class getApplicationInputs_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceId
-     - computeResourceDescription
+     - 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, '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, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, computeResourceId=None, computeResourceDescription=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.computeResourceId = computeResourceId
-        self.computeResourceDescription = computeResourceDescription
+        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:
@@ -33464,13 +31899,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.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -33482,18 +31911,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('getApplicationInputs_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.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()
@@ -33501,10 +31926,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.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -33519,7 +31942,7 @@ class updateComputeResource_args(object):
         return not (self == other)
 
 
-class updateComputeResource_result(object):
+class getApplicationInputs_result(object):
     """
     Attributes:
      - success
@@ -33530,7 +31953,7 @@ class updateComputeResource_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
@@ -33554,8 +31977,14 @@ class updateComputeResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype176, _size173) = iprot.readListBegin()
+                    for _i177 in range(_size173):
+                        _elem178 = airavata.model.application.io.ttypes.InputDataObjectType()
+                        _elem178.read(iprot)
+                        self.success.append(_elem178)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33591,10 +32020,13 @@ 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('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 iter179 in self.success:
+                iter179.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -33630,22 +32062,22 @@ class updateComputeResource_result(object):
         return not (self == other)
 
 
-class deleteComputeResource_args(object):
+class getApplicationOutputs_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceId
+     - 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, 'computeResourceId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, computeResourceId=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.computeResourceId = computeResourceId
+        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:
@@ -33664,7 +32096,7 @@ class deleteComputeResource_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()
+                    self.appInterfaceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -33676,14 +32108,14 @@ 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('getApplicationOutputs_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)
+        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()
@@ -33691,8 +32123,8 @@ class deleteComputeResource_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.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -33707,7 +32139,7 @@ class deleteComputeResource_args(object):
         return not (self == other)
 
 
-class deleteComputeResource_result(object):
+class getApplicationOutputs_result(object):
     """
     Attributes:
      - success
@@ -33718,7 +32150,7 @@ class deleteComputeResource_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, '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
@@ -33742,8 +32174,14 @@ class deleteComputeResource_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.application.io.ttypes.OutputDataObjectType()
+                        _elem185.read(iprot)
+                        self.success.append(_elem185)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33779,10 +32217,13 @@ 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('getApplicationOutputs_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)
@@ -33818,22 +32259,22 @@ class deleteComputeResource_result(object):
         return not (self == other)
 
 
-class registerStorageResource_args(object):
+class getAvailableAppInterfaceComputeResources_args(object):
     """
     Attributes:
      - authzToken
-     - storageResourceDescription
+     - 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.STRUCT, 'storageResourceDescription', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 2
+        (2, TType.STRING, 'appInterfaceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, storageResourceDescription=None,):
+    def __init__(self, authzToken=None, appInterfaceId=None,):
         self.authzToken = authzToken
-        self.storageResourceDescription = storageResourceDescription
+        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:
@@ -33851,9 +32292,8 @@ class registerStorageResource_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
-                if ftype == TType.STRUCT:
-                    self.storageResourceDescription = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
-                    self.storageResourceDescription.read(iprot)
+                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:
@@ -33865,14 +32305,14 @@ 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('getAvailableAppInterfaceComputeResources_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)
+        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()
@@ -33880,8 +32320,8 @@ class registerStorageResource_args(object):
     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!')
+        if self.appInterfaceId is None:
+            raise TProtocolException(message='Required field appInterfaceId is unset!')
         return
 
     def __repr__(self):
@@ -33896,7 +32336,7 @@ class registerStorageResource_args(object):
         return not (self == other)
 
 
-class registerStorageResource_result(object):
+class getAvailableAppInterfaceComputeResources_result(object):
     """
     Attributes:
      - success
@@ -33907,7 +32347,7 @@ class registerStorageResource_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', 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
@@ -33931,8 +32371,14 @@ 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.MAP:
+                    self.success = {}
+                    (_ktype188, _vtype189, _size187) = iprot.readMapBegin()
+                    for _i191 in range(_size187):
+                        _key192 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val193 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key192] = _val193
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -33968,10 +32414,14 @@ 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('getAvailableAppInterfaceComputeResources_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.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
+            for kiter194, viter195 in self.success.items():
+                oprot.writeString(kiter194.encode('utf-8') if sys.version_info[0] == 2 else kiter194)
+                oprot.writeString(viter195.encode('utf-8') if sys.version_info[0] == 2 else viter195)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34007,22 +32457,22 @@ class registerStorageResource_result(object):
         return not (self == other)
 
 
-class getStorageResource_args(object):
+class registerComputeResource_args(object):
     """
     Attributes:
      - authzToken
-     - storageResourceId
+     - 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, 'storageResourceId', '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, storageResourceId=None,):
+    def __init__(self, authzToken=None, computeResourceDescription=None,):
         self.authzToken = authzToken
-        self.storageResourceId = storageResourceId
+        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:
@@ -34040,8 +32490,9 @@ class getStorageResource_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()
+                if ftype == TType.STRUCT:
+                    self.computeResourceDescription = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
+                    self.computeResourceDescription.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -34053,14 +32504,14 @@ 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('registerComputeResource_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.computeResourceDescription is not None:
+            oprot.writeFieldBegin('computeResourceDescription', TType.STRUCT, 2)
+            self.computeResourceDescription.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -34068,8 +32519,8 @@ class getStorageResource_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.computeResourceDescription is None:
+            raise TProtocolException(message='Required field computeResourceDescription is unset!')
         return
 
     def __repr__(self):
@@ -34084,7 +32535,7 @@ class getStorageResource_args(object):
         return not (self == other)
 
 
-class getStorageResource_result(object):
+class registerComputeResource_result(object):
     """
     Attributes:
      - success
@@ -34095,7 +32546,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.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
@@ -34119,9 +32570,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.STRING:
+                    self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34157,10 +32607,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('registerComputeResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.STRUCT, 0)
-            self.success.write(oprot)
+            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)
@@ -34196,19 +32646,22 @@ class getStorageResource_result(object):
         return not (self == other)
 
 
-class getAllStorageResourceNames_args(object):
+class getComputeResource_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,):
+    def __init__(self, authzToken=None, computeResourceId=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:
@@ -34225,6 +32678,11 @@ 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)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -34234,17 +32692,23 @@ 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('getComputeResource_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):
@@ -34259,7 +32723,7 @@ class getAllStorageResourceNames_args(object):
         return not (self == other)
 
 
-class getAllStorageResourceNames_result(object):
+class getComputeResource_result(object):
     """
     Attributes:
      - success
@@ -34270,7 +32734,7 @@ class getAllStorageResourceNames_result(object):
     """
 
     thrift_spec = (
-        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', 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
@@ -34294,14 +32758,9 @@ class getAllStorageResourceNames_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.MAP:
-                    self.success = {}
-                    (_ktype206, _vtype207, _size205) = iprot.readMapBegin()
-                    for _i209 in range(_size205):
-                        _key210 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        _val211 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success[_key210] = _val211
-                    iprot.readMapEnd()
+                if ftype == TType.STRUCT:
+                    self.success = airavata.model.appcatalog.computeresource.ttypes.ComputeResourceDescription()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34337,14 +32796,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('getComputeResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.MAP, 0)
-            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-            for kiter212, viter213 in self.success.items():
-                oprot.writeString(kiter212.encode('utf-8') if sys.version_info[0] == 2 else kiter212)
-                oprot.writeString(viter213.encode('utf-8') if sys.version_info[0] == 2 else viter213)
-            oprot.writeMapEnd()
+            oprot.writeFieldBegin('success', TType.STRUCT, 0)
+            self.success.write(oprot)
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34380,25 +32835,19 @@ class getAllStorageResourceNames_result(object):
         return not (self == other)
 
 
-class updateStorageResource_args(object):
+class getAllComputeResourceNames_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.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, storageResourceId=None, storageResourceDescription=None,):
+    def __init__(self, authzToken=None,):
         self.authzToken = authzToken
-        self.storageResourceId = storageResourceId
-        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:
@@ -34415,17 +32864,6 @@ class updateStorageResource_args(object):
                     self.authzToken.read(iprot)
                 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)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -34435,29 +32873,17 @@ 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('getAllComputeResourceNames_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, 3)
-            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.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
 
     def __repr__(self):
@@ -34472,7 +32898,7 @@ class updateStorageResource_args(object):
         return not (self == other)
 
 
-class updateStorageResource_result(object):
+class getAllComputeResourceNames_result(object):
     """
     Attributes:
      - success
@@ -34483,7 +32909,7 @@ class updateStorageResource_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
@@ -34507,8 +32933,14 @@ class updateStorageResource_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype197, _vtype198, _size196) = iprot.readMapBegin()
+                    for _i200 in range(_size196):
+                        _key201 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val202 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key201] = _val202
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -34544,10 +32976,14 @@ 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('getAllComputeResourceNames_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 kiter203, viter204 in self.success.items():
+                oprot.writeString(kiter203.encode('utf-8') if sys.version_info[0] == 2 else kiter203)
+                oprot.writeString(viter204.encode('utf-8') if sys.version_info[0] == 2 else viter204)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -34583,22 +33019,25 @@ class updateStorageResource_result(object):
         return not (self == other)
 
 
-class deleteStorageResource_args(object):
+class updateComputeResource_args(object):
     """
     Attributes:
      - authzToken
-     - storageResourceId
+     - 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.STRING, 'storageResourceId', 'UTF8', 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, storageResourceId=None,):
+    def __init__(self, authzToken=None, computeResourceId=None, computeResourceDescription=None,):
         self.authzToken = authzToken
-        self.storageResourceId = storageResourceId
+        self.computeResourceId = computeResourceId
+        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:
@@ -34617,7 +33056,13 @@ 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.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)
                 else:
                     iprot.skip(ftype)
             else:
@@ -34629,14 +33074,18 @@ 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('updateComputeResource_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.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)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -34644,8 +33093,10 @@ 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.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
 
     def __repr__(self):
@@ -34660,7 +33111,7 @@ class deleteStorageResource_args(object):
         return not (self == other)
 
 
-class deleteStorageResource_result(object):
+class updateComputeResource_result(object):
     """
     Attributes:
      - success
@@ -34732,7 +33183,7 @@ 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('updateComputeResource_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -34771,28 +33222,22 @@ class deleteStorageResource_result(object):
         return not (self == other)
 
 
-class addLocalSubmissionDetails_args(object):
+class deleteComputeResource_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, computeResourceId=None, priorityOrder=None, localSubmission=None,):
+    def __init__(self, authzToken=None, computeResourceId=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:
@@ -34814,17 +33259,6 @@ class addLocalSubmissionDetails_args(object):
                     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()
@@ -34834,7 +33268,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('deleteComputeResource_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -34843,14 +33277,6 @@ class addLocalSubmissionDetails_args(object):
             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()
 
@@ -34859,10 +33285,6 @@ class addLocalSubmissionDetails_args(object):
             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):
@@ -34877,7 +33299,7 @@ class addLocalSubmissionDetails_args(object):
         return not (self == other)
 
 
-class addLocalSubmissionDetails_result(object):
+class deleteComputeResource_result(object):
     """
     Attributes:
      - success
@@ -34888,7 +33310,7 @@ class addLocalSubmissionDetails_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
@@ -34912,8 +33334,8 @@ class addLocalSubmissionDetails_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:
@@ -34949,10 +33371,10 @@ 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('deleteComputeResource_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)
@@ -34988,25 +33410,22 @@ class addLocalSubmissionDetails_result(object):
         return not (self == other)
 
 
-class updateLocalSubmissionDetails_args(object):
+class registerStorageResource_args(object):
     """
     Attributes:
      - authzToken
-     - jobSubmissionInterfaceId
-     - localSubmission
+     - 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.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.STRUCT, 'storageResourceDescription', (airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription, airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription.thrift_spec), None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, jobSubmissionInterfaceId=None, localSubmission=None,):
+    def __init__(self, authzToken=None, storageResourceDescription=None,):
         self.authzToken = authzToken
-        self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
-        self.localSubmission = localSubmission
+        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:
@@ -35024,14 +33443,9 @@ class updateLocalSubmissionDetails_args(object):
                 else:
                     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()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
                 if ftype == TType.STRUCT:
-                    self.localSubmission = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
-                    self.localSubmission.read(iprot)
+                    self.storageResourceDescription = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
+                    self.storageResourceDescription.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -35043,18 +33457,14 @@ 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('registerStorageResource_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)
-            oprot.writeFieldEnd()
-        if self.localSubmission is not None:
-            oprot.writeFieldBegin('localSubmission', TType.STRUCT, 3)
-            self.localSubmission.write(oprot)
+        if self.storageResourceDescription is not None:
+            oprot.writeFieldBegin('storageResourceDescription', TType.STRUCT, 2)
+            self.storageResourceDescription.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -35062,10 +33472,8 @@ class updateLocalSubmissionDetails_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken 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!')
+        if self.storageResourceDescription is None:
+            raise TProtocolException(message='Required field storageResourceDescription is unset!')
         return
 
     def __repr__(self):
@@ -35080,7 +33488,7 @@ class updateLocalSubmissionDetails_args(object):
         return not (self == other)
 
 
-class updateLocalSubmissionDetails_result(object):
+class registerStorageResource_result(object):
     """
     Attributes:
      - success
@@ -35091,7 +33499,7 @@ class updateLocalSubmissionDetails_result(object):
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, 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
@@ -35115,8 +33523,8 @@ class updateLocalSubmissionDetails_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                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:
@@ -35152,10 +33560,10 @@ class updateLocalSubmissionDetails_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('updateLocalSubmissionDetails_result')
+        oprot.writeStructBegin('registerStorageResource_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
+            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)
@@ -35191,22 +33599,22 @@ class updateLocalSubmissionDetails_result(object):
         return not (self == other)
 
 
-class getLocalJobSubmission_args(object):
+class getStorageResource_args(object):
     """
     Attributes:
      - authzToken
-     - jobSubmissionId
+     - 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, 'jobSubmissionId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'storageResourceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, jobSubmissionId=None,):
+    def __init__(self, authzToken=None, storageResourceId=None,):
         self.authzToken = authzToken
-        self.jobSubmissionId = jobSubmissionId
+        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:
@@ -35225,7 +33633,7 @@ class getLocalJobSubmission_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.jobSubmissionId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                    self.storageResourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                 else:
                     iprot.skip(ftype)
             else:
@@ -35237,14 +33645,14 @@ class getLocalJobSubmission_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('getLocalJobSubmission_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.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)
+        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()
@@ -35252,8 +33660,8 @@ class getLocalJobSubmission_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.jobSubmissionId is None:
-            raise TProtocolException(message='Required field jobSubmissionId is unset!')
+        if self.storageResourceId is None:
+            raise TProtocolException(message='Required field storageResourceId is unset!')
         return
 
     def __repr__(self):
@@ -35268,7 +33676,7 @@ class getLocalJobSubmission_args(object):
         return not (self == other)
 
 
-class getLocalJobSubmission_result(object):
+class getStorageResource_result(object):
     """
     Attributes:
      - success
@@ -35279,7 +33687,7 @@ class getLocalJobSubmission_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission, airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission.thrift_spec), 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
@@ -35304,7 +33712,7 @@ class getLocalJobSubmission_result(object):
                 break
             if fid == 0:
                 if ftype == TType.STRUCT:
-                    self.success = airavata.model.appcatalog.computeresource.ttypes.LOCALSubmission()
+                    self.success = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
                     self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
@@ -35341,7 +33749,7 @@ class getLocalJobSubmission_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('getLocalJobSubmission_result')
+        oprot.writeStructBegin('getStorageResource_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.STRUCT, 0)
             self.success.write(oprot)
@@ -35380,28 +33788,19 @@ class getLocalJobSubmission_result(object):
         return not (self == other)
 
 
-class addSSHJobSubmissionDetails_args(object):
+class getAllStorageResourceNames_args(object):
     """
     Attributes:
      - authzToken
-     - 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, '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, computeResourceId=None, priorityOrder=None, sshJobSubmission=None,):
+    def __init__(self, authzToken=None,):
         self.authzToken = authzToken
-        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:
@@ -35418,22 +33817,6 @@ class addSSHJobSubmissionDetails_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.sshJobSubmission = airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission()
-                    self.sshJobSubmission.read(iprot)
-                else:
-                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -35443,35 +33826,17 @@ class addSSHJobSubmissionDetails_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('addSSHJobSubmissionDetails_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()
-        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()
 
     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.sshJobSubmission is None:
-            raise TProtocolException(message='Required field sshJobSubmission is unset!')
         return
 
     def __repr__(self):
@@ -35486,7 +33851,7 @@ class addSSHJobSubmissionDetails_args(object):
         return not (self == other)
 
 
-class addSSHJobSubmissionDetails_result(object):
+class getAllStorageResourceNames_result(object):
     """
     Attributes:
      - success
@@ -35497,7 +33862,7 @@ class addSSHJobSubmissionDetails_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', 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
@@ -35521,8 +33886,14 @@ class addSSHJobSubmissionDetails_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.MAP:
+                    self.success = {}
+                    (_ktype206, _vtype207, _size205) = iprot.readMapBegin()
+                    for _i209 in range(_size205):
+                        _key210 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val211 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key210] = _val211
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -35558,10 +33929,14 @@ class addSSHJobSubmissionDetails_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('addSSHJobSubmissionDetails_result')
+        oprot.writeStructBegin('getAllStorageResourceNames_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.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
+            for kiter212, viter213 in self.success.items():
+                oprot.writeString(kiter212.encode('utf-8') if sys.version_info[0] == 2 else kiter212)
+                oprot.writeString(viter213.encode('utf-8') if sys.version_info[0] == 2 else viter213)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -35597,28 +33972,25 @@ class addSSHJobSubmissionDetails_result(object):
         return not (self == other)
 
 
-class addSSHForkJobSubmissionDetails_args(object):
+class updateStorageResource_args(object):
     """
     Attributes:
      - authzToken
-     - computeResourceId
-     - priorityOrder
-     - sshJobSubmission
+     - 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.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
+        (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, computeResourceId=None, priorityOrder=None, sshJobSubmission=None,):
+    def __init__(self, authzToken=None, storageResourceId=None, storageResourceDescription=None,):
         self.authzToken = authzToken
-        self.computeResourceId = computeResourceId
-        self.priorityOrder = priorityOrder
-        self.sshJobSubmission = sshJobSubmission
+        self.storageResourceId = storageResourceId
+        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:
@@ -35637,18 +34009,13 @@ class addSSHForkJobSubmissionDetails_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()
+                    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.I32:
-                    self.priorityOrder = iprot.readI32()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 4:
                 if ftype == TType.STRUCT:
-                    self.sshJobSubmission = airavata.model.appcatalog.computeresource.ttypes.SSHJobSubmission()
-                    self.sshJobSubmission.read(iprot)
+                    self.storageResourceDescription = airavata.model.appcatalog.storageresource.ttypes.StorageResourceDescription()
+                    self.storageResourceDescription.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -35660,22 +34027,18 @@ class addSSHForkJobSubmissionDetails_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('addSSHForkJobSubmissionDetails_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.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)
+        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.sshJobSubmission is not None:
-            oprot.writeFieldBegin('sshJobSubmission', TType.STRUCT, 4)
-            self.sshJobSubmission.write(oprot)
+        if self.storageResourceDescription is not None:
+            oprot.writeFieldBegin('storageResourceDescription', TType.STRUCT, 3)
+            self.storageResourceDescription.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -35683,12 +34046,10 @@ class addSSHForkJobSubmissionDetails_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.priorityOrder is None:
-            raise TProtocolException(message='Required field priorityOrder is unset!')
-        if self.sshJobSubmission is None:
-            raise TProtocolException(message='Required field sshJobSubmission 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
 
     def __repr__(self):
@@ -35703,7 +34064,7 @@ class addSSHForkJobSubmissionDetails_args(object):
         return not (self == other)
 
 
-class addSSHForkJobSubmissionDetails_result(object):
+class updateStorageResource_result(object):
     """
     Attributes:
      - success
@@ -35714,7 +34075,7 @@ class addSSHForkJobSubmissionDetails_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
@@ -35738,8 +34099,8 @@ class addSSHForkJobSubmissionDetails_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:
@@ -35775,10 +34136,10 @@ class addSSHForkJobSubmissionDetails_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('addSSHForkJobSubmissionDetails_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)
@@ -35814,22 +34175,22 @@ class addSSHForkJobSubmissionDetails_result(object):
         return not (self == other)
 
 
-class getSSHJobSubmission_args(object):
+class deleteStorageResource_args(object):
     """
     Attributes:
      - authzToken
-     - jobSubmissionId
+     - 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, 'jobSubmissionId', 'UTF8', None, ),  # 2
+        (2, TType.STRING, 'storageResourceId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, jobSubmissionId=None,):
+    def __init__(self, authzToken=None, storageResourceId=None,):
         self.authzToken = authzToken
-        self.jobSubmissionId = jobSubmissionId
+        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:
@@ -35848,7 +34209,7 @@ class getSSHJobSubmission_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
... 23487 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.