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/02/23 06:39:39 UTC

[airavata-django-portal] branch master updated (ffd38ba -> ab9800d)

This is an automated email from the ASF dual-hosted git repository.

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


    from ffd38ba  Adding upload error logging, logging config
     new 910cf78  AIRAVATA-2688 Regenerated thrift stubs
     new 3ea3901  AIRAVATA-2688 Adding/removing users in group edit
     new bbda507  AIRAVATA-2688 Fix edit link
     new ab9800d  AIRAVATA-2688 Fix isMember for when there are no members

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 airavata/api/Airavata-remote                       |   112 +
 airavata/api/Airavata.py                           | 18214 ++++++++++++-------
 airavata/api/ttypes.py                             |     1 +
 .../appcatalog/groupresourceprofile}/__init__.py   |     0
 .../appcatalog/groupresourceprofile}/constants.py  |     0
 .../appcatalog/groupresourceprofile/ttypes.py      |   837 +
 airavata/model/group/ttypes.py                     |    12 +-
 .../groupmanager/cpi/GroupManagerService-remote    |    14 +
 .../groupmanager/cpi/GroupManagerService.py        |   540 +-
 django_airavata/apps/api/serializers.py            |    10 +-
 django_airavata/apps/api/views.py                  |     9 +-
 .../js/groups_components/GroupCreateContainer.vue  |     3 +
 .../js/groups_components/GroupEditContainer.vue    |     5 +-
 .../js/groups_components/GroupEditor.vue           |    34 +-
 .../js/groups_components/GroupListItem.vue         |    26 +-
 15 files changed, 12879 insertions(+), 6938 deletions(-)
 copy airavata/{service/profile/user/cpi/error => model/appcatalog/groupresourceprofile}/__init__.py (100%)
 copy airavata/{service/profile/user/cpi/error => model/appcatalog/groupresourceprofile}/constants.py (100%)
 create mode 100644 airavata/model/appcatalog/groupresourceprofile/ttypes.py

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

[airavata-django-portal] 01/04: AIRAVATA-2688 Regenerated thrift stubs

Posted by ma...@apache.org.
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 910cf784170862a625a89a491f938fbee717c15b
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Feb 23 01:25:31 2018 -0500

    AIRAVATA-2688 Regenerated thrift stubs
---
 airavata/api/Airavata-remote                       |   112 +
 airavata/api/Airavata.py                           | 18214 ++++++++++++-------
 airavata/api/ttypes.py                             |     1 +
 .../appcatalog/groupresourceprofile/__init__.py    |     1 +
 .../appcatalog/groupresourceprofile/constants.py   |    12 +
 .../appcatalog/groupresourceprofile/ttypes.py      |   837 +
 airavata/model/group/ttypes.py                     |    12 +-
 .../groupmanager/cpi/GroupManagerService-remote    |    14 +
 .../groupmanager/cpi/GroupManagerService.py        |   540 +-
 9 files changed, 12848 insertions(+), 6895 deletions(-)

diff --git a/airavata/api/Airavata-remote b/airavata/api/Airavata-remote
index 0d3d470..138ed6b 100755
--- a/airavata/api/Airavata-remote
+++ b/airavata/api/Airavata-remote
@@ -79,12 +79,14 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
     print('  ApplicationModule getApplicationModule(AuthzToken authzToken, string appModuleId)')
     print('  bool updateApplicationModule(AuthzToken authzToken, string appModuleId, ApplicationModule applicationModule)')
     print('   getAllAppModules(AuthzToken authzToken, string gatewayId)')
+    print('   getAccessibleAppModules(AuthzToken authzToken, string gatewayId, ResourcePermissionType permissionType)')
     print('  bool deleteApplicationModule(AuthzToken authzToken, string appModuleId)')
     print('  string registerApplicationDeployment(AuthzToken authzToken, string gatewayId, ApplicationDeploymentDescription applicationDeployment)')
     print('  ApplicationDeploymentDescription getApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
     print('  bool updateApplicationDeployment(AuthzToken authzToken, string appDeploymentId, ApplicationDeploymentDescription applicationDeployment)')
     print('  bool deleteApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
     print('   getAllApplicationDeployments(AuthzToken authzToken, string gatewayId)')
+    print('   getAccessibleApplicationDeployments(AuthzToken authzToken, string gatewayId, ResourcePermissionType permissionType)')
     print('   getAppModuleDeployedResources(AuthzToken authzToken, string appModuleId)')
     print('  string registerApplicationInterface(AuthzToken authzToken, string gatewayId, ApplicationInterfaceDescription applicationInterface)')
     print('  string cloneApplicationInterface(AuthzToken authzToken, string existingAppInterfaceID, string newApplicationName, string gatewayId)')
@@ -191,6 +193,20 @@ 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('  void createGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)')
+    print('  void updateGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)')
+    print('  GroupResourceProfile getGroupResourceProfile(AuthzToken authzToken, string groupResourceProfileId)')
+    print('  bool removeGroupResourceProfile(AuthzToken authzToken, string groupResourceProfileId)')
+    print('   getGroupResourceList(AuthzToken authzToken, string gatewayId)')
+    print('  bool removeGroupComputePrefs(AuthzToken authzToken, string computeResourceId, string groupResourceProfileId)')
+    print('  bool removeGroupComputeResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
+    print('  bool removeGroupBatchQueueResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
+    print('  GroupComputeResourcePreference getGroupComputeResourcePreference(AuthzToken authzToken, string computeResourceId, string groupResourceProfileId)')
+    print('  ComputeResourcePolicy getGroupComputeResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
+    print('  BatchQueueResourcePolicy getBatchQueueResourcePolicy(AuthzToken authzToken, string resourcePolicyId)')
+    print('   getGroupComputeResourcePrefList(AuthzToken authzToken, string groupResourceProfileId)')
+    print('   getGroupBatchQueueResourcePolicyList(AuthzToken authzToken, string groupResourceProfileId)')
+    print('   getGroupComputeResourcePolicyList(AuthzToken authzToken, string groupResourceProfileId)')
     print('')
     sys.exit(0)
 
@@ -600,6 +616,12 @@ elif cmd == 'getAllAppModules':
         sys.exit(1)
     pp.pprint(client.getAllAppModules(eval(args[0]), args[1],))
 
+elif cmd == 'getAccessibleAppModules':
+    if len(args) != 3:
+        print('getAccessibleAppModules requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAccessibleAppModules(eval(args[0]), args[1], eval(args[2]),))
+
 elif cmd == 'deleteApplicationModule':
     if len(args) != 2:
         print('deleteApplicationModule requires 2 args')
@@ -636,6 +658,12 @@ elif cmd == 'getAllApplicationDeployments':
         sys.exit(1)
     pp.pprint(client.getAllApplicationDeployments(eval(args[0]), args[1],))
 
+elif cmd == 'getAccessibleApplicationDeployments':
+    if len(args) != 3:
+        print('getAccessibleApplicationDeployments requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAccessibleApplicationDeployments(eval(args[0]), args[1], eval(args[2]),))
+
 elif cmd == 'getAppModuleDeployedResources':
     if len(args) != 2:
         print('getAppModuleDeployedResources requires 2 args')
@@ -1272,6 +1300,90 @@ elif cmd == 'getAllAccessibleUsers':
         sys.exit(1)
     pp.pprint(client.getAllAccessibleUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
 
+elif cmd == 'createGroupResourceProfile':
+    if len(args) != 2:
+        print('createGroupResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.createGroupResourceProfile(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateGroupResourceProfile':
+    if len(args) != 2:
+        print('updateGroupResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.updateGroupResourceProfile(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getGroupResourceProfile':
+    if len(args) != 2:
+        print('getGroupResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupResourceProfile(eval(args[0]), args[1],))
+
+elif cmd == 'removeGroupResourceProfile':
+    if len(args) != 2:
+        print('removeGroupResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.removeGroupResourceProfile(eval(args[0]), args[1],))
+
+elif cmd == 'getGroupResourceList':
+    if len(args) != 2:
+        print('getGroupResourceList requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupResourceList(eval(args[0]), args[1],))
+
+elif cmd == 'removeGroupComputePrefs':
+    if len(args) != 3:
+        print('removeGroupComputePrefs requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.removeGroupComputePrefs(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'removeGroupComputeResourcePolicy':
+    if len(args) != 2:
+        print('removeGroupComputeResourcePolicy requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.removeGroupComputeResourcePolicy(eval(args[0]), args[1],))
+
+elif cmd == 'removeGroupBatchQueueResourcePolicy':
+    if len(args) != 2:
+        print('removeGroupBatchQueueResourcePolicy requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.removeGroupBatchQueueResourcePolicy(eval(args[0]), args[1],))
+
+elif cmd == 'getGroupComputeResourcePreference':
+    if len(args) != 3:
+        print('getGroupComputeResourcePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupComputeResourcePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getGroupComputeResourcePolicy':
+    if len(args) != 2:
+        print('getGroupComputeResourcePolicy requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupComputeResourcePolicy(eval(args[0]), args[1],))
+
+elif cmd == 'getBatchQueueResourcePolicy':
+    if len(args) != 2:
+        print('getBatchQueueResourcePolicy requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getBatchQueueResourcePolicy(eval(args[0]), args[1],))
+
+elif cmd == 'getGroupComputeResourcePrefList':
+    if len(args) != 2:
+        print('getGroupComputeResourcePrefList requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupComputeResourcePrefList(eval(args[0]), args[1],))
+
+elif cmd == 'getGroupBatchQueueResourcePolicyList':
+    if len(args) != 2:
+        print('getGroupBatchQueueResourcePolicyList requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupBatchQueueResourcePolicyList(eval(args[0]), args[1],))
+
+elif cmd == 'getGroupComputeResourcePolicyList':
+    if len(args) != 2:
+        print('getGroupComputeResourcePolicyList requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroupComputeResourcePolicyList(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 772a5a0..b36f53f 100644
--- a/airavata/api/Airavata.py
+++ b/airavata/api/Airavata.py
@@ -1358,6 +1358,27 @@ class Iface(object):
         """
         pass
 
+    def getAccessibleAppModules(self, authzToken, gatewayId, permissionType):
+        """
+
+        Fetch all accessible Application Module Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all accessible application deployment documentation.
+        @param permissionType
+           ResourcePermissionType to check for this user
+
+        @return list
+           Returns the list of all Application Module Objects that are accessible to the user.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - permissionType
+        """
+        pass
+
     def deleteApplicationModule(self, authzToken, appModuleId):
         """
 
@@ -1474,6 +1495,27 @@ class Iface(object):
         """
         pass
 
+    def getAccessibleApplicationDeployments(self, authzToken, gatewayId, permissionType):
+        """
+
+        Fetch all accessible Application Deployment Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all accessible application deployment documentation.
+        @param permissionType
+           ResourcePermissionType to check for this user
+
+        @return list<applicationDeployment.
+           Returns the list of all application Deployment Objects that are accessible to the user.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - permissionType
+        """
+        pass
+
     def getAppModuleDeployedResources(self, authzToken, appModuleId):
         """
         Fetch a list of Deployed Compute Hosts.
@@ -3444,6 +3486,120 @@ class Iface(object):
         """
         pass
 
+    def createGroupResourceProfile(self, authzToken, groupResourceProfile):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfile
+        """
+        pass
+
+    def updateGroupResourceProfile(self, authzToken, groupResourceProfile):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfile
+        """
+        pass
+
+    def getGroupResourceProfile(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        pass
+
+    def removeGroupResourceProfile(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        pass
+
+    def getGroupResourceList(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def removeGroupComputePrefs(self, authzToken, computeResourceId, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - groupResourceProfileId
+        """
+        pass
+
+    def removeGroupComputeResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        pass
+
+    def removeGroupBatchQueueResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        pass
+
+    def getGroupComputeResourcePreference(self, authzToken, computeResourceId, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - groupResourceProfileId
+        """
+        pass
+
+    def getGroupComputeResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        pass
+
+    def getBatchQueueResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        pass
+
+    def getGroupComputeResourcePrefList(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        pass
+
+    def getGroupBatchQueueResourcePolicyList(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        pass
+
+    def getGroupComputeResourcePolicyList(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        pass
+
 
 class Client(Iface):
     def __init__(self, iprot, oprot=None):
@@ -6657,6 +6813,61 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllAppModules failed: unknown result")
 
+    def getAccessibleAppModules(self, authzToken, gatewayId, permissionType):
+        """
+
+        Fetch all accessible Application Module Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all accessible application deployment documentation.
+        @param permissionType
+           ResourcePermissionType to check for this user
+
+        @return list
+           Returns the list of all Application Module Objects that are accessible to the user.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - permissionType
+        """
+        self.send_getAccessibleAppModules(authzToken, gatewayId, permissionType)
+        return self.recv_getAccessibleAppModules()
+
+    def send_getAccessibleAppModules(self, authzToken, gatewayId, permissionType):
+        self._oprot.writeMessageBegin('getAccessibleAppModules', TMessageType.CALL, self._seqid)
+        args = getAccessibleAppModules_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.permissionType = permissionType
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAccessibleAppModules(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAccessibleAppModules_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, "getAccessibleAppModules failed: unknown result")
+
     def deleteApplicationModule(self, authzToken, appModuleId):
         """
 
@@ -6973,6 +7184,61 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllApplicationDeployments failed: unknown result")
 
+    def getAccessibleApplicationDeployments(self, authzToken, gatewayId, permissionType):
+        """
+
+        Fetch all accessible Application Deployment Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all accessible application deployment documentation.
+        @param permissionType
+           ResourcePermissionType to check for this user
+
+        @return list<applicationDeployment.
+           Returns the list of all application Deployment Objects that are accessible to the user.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - permissionType
+        """
+        self.send_getAccessibleApplicationDeployments(authzToken, gatewayId, permissionType)
+        return self.recv_getAccessibleApplicationDeployments()
+
+    def send_getAccessibleApplicationDeployments(self, authzToken, gatewayId, permissionType):
+        self._oprot.writeMessageBegin('getAccessibleApplicationDeployments', TMessageType.CALL, self._seqid)
+        args = getAccessibleApplicationDeployments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.permissionType = permissionType
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAccessibleApplicationDeployments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAccessibleApplicationDeployments_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, "getAccessibleApplicationDeployments failed: unknown result")
+
     def getAppModuleDeployedResources(self, authzToken, appModuleId):
         """
         Fetch a list of Deployed Compute Hosts.
@@ -12524,719 +12790,791 @@ class Client(Iface):
             raise result.ae
         raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllAccessibleUsers failed: unknown result")
 
+    def createGroupResourceProfile(self, authzToken, groupResourceProfile):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfile
+        """
+        self.send_createGroupResourceProfile(authzToken, groupResourceProfile)
+        self.recv_createGroupResourceProfile()
 
-class Processor(Iface, TProcessor):
-    def __init__(self, handler):
-        self._handler = handler
-        self._processMap = {}
-        self._processMap["getAPIVersion"] = Processor.process_getAPIVersion
-        self._processMap["isUserExists"] = Processor.process_isUserExists
-        self._processMap["addGateway"] = Processor.process_addGateway
-        self._processMap["getAllUsersInGateway"] = Processor.process_getAllUsersInGateway
-        self._processMap["updateGateway"] = Processor.process_updateGateway
-        self._processMap["getGateway"] = Processor.process_getGateway
-        self._processMap["deleteGateway"] = Processor.process_deleteGateway
-        self._processMap["getAllGateways"] = Processor.process_getAllGateways
-        self._processMap["isGatewayExist"] = Processor.process_isGatewayExist
-        self._processMap["createNotification"] = Processor.process_createNotification
-        self._processMap["updateNotification"] = Processor.process_updateNotification
-        self._processMap["deleteNotification"] = Processor.process_deleteNotification
-        self._processMap["getNotification"] = Processor.process_getNotification
-        self._processMap["getAllNotifications"] = Processor.process_getAllNotifications
-        self._processMap["generateAndRegisterSSHKeys"] = Processor.process_generateAndRegisterSSHKeys
-        self._processMap["registerPwdCredential"] = Processor.process_registerPwdCredential
-        self._processMap["getSSHPubKey"] = Processor.process_getSSHPubKey
-        self._processMap["getAllGatewaySSHPubKeys"] = Processor.process_getAllGatewaySSHPubKeys
-        self._processMap["getAllCredentialSummaryForGateway"] = Processor.process_getAllCredentialSummaryForGateway
-        self._processMap["getAllCredentialSummaryForUsersInGateway"] = Processor.process_getAllCredentialSummaryForUsersInGateway
-        self._processMap["getAllGatewayPWDCredentials"] = Processor.process_getAllGatewayPWDCredentials
-        self._processMap["deleteSSHPubKey"] = Processor.process_deleteSSHPubKey
-        self._processMap["deletePWDCredential"] = Processor.process_deletePWDCredential
-        self._processMap["createProject"] = Processor.process_createProject
-        self._processMap["updateProject"] = Processor.process_updateProject
-        self._processMap["getProject"] = Processor.process_getProject
-        self._processMap["deleteProject"] = Processor.process_deleteProject
-        self._processMap["getUserProjects"] = Processor.process_getUserProjects
-        self._processMap["searchProjects"] = Processor.process_searchProjects
-        self._processMap["searchExperiments"] = Processor.process_searchExperiments
-        self._processMap["getExperimentStatistics"] = Processor.process_getExperimentStatistics
-        self._processMap["getExperimentsInProject"] = Processor.process_getExperimentsInProject
-        self._processMap["getUserExperiments"] = Processor.process_getUserExperiments
-        self._processMap["createExperiment"] = Processor.process_createExperiment
-        self._processMap["deleteExperiment"] = Processor.process_deleteExperiment
-        self._processMap["getExperiment"] = Processor.process_getExperiment
-        self._processMap["getExperimentByAdmin"] = Processor.process_getExperimentByAdmin
-        self._processMap["getDetailedExperimentTree"] = Processor.process_getDetailedExperimentTree
-        self._processMap["updateExperiment"] = Processor.process_updateExperiment
-        self._processMap["updateExperimentConfiguration"] = Processor.process_updateExperimentConfiguration
-        self._processMap["updateResourceScheduleing"] = Processor.process_updateResourceScheduleing
-        self._processMap["validateExperiment"] = Processor.process_validateExperiment
-        self._processMap["launchExperiment"] = Processor.process_launchExperiment
-        self._processMap["getExperimentStatus"] = Processor.process_getExperimentStatus
-        self._processMap["getExperimentOutputs"] = Processor.process_getExperimentOutputs
-        self._processMap["getIntermediateOutputs"] = Processor.process_getIntermediateOutputs
-        self._processMap["getJobStatuses"] = Processor.process_getJobStatuses
-        self._processMap["getJobDetails"] = Processor.process_getJobDetails
-        self._processMap["cloneExperiment"] = Processor.process_cloneExperiment
-        self._processMap["cloneExperimentByAdmin"] = Processor.process_cloneExperimentByAdmin
-        self._processMap["terminateExperiment"] = Processor.process_terminateExperiment
-        self._processMap["registerApplicationModule"] = Processor.process_registerApplicationModule
-        self._processMap["getApplicationModule"] = Processor.process_getApplicationModule
-        self._processMap["updateApplicationModule"] = Processor.process_updateApplicationModule
-        self._processMap["getAllAppModules"] = Processor.process_getAllAppModules
-        self._processMap["deleteApplicationModule"] = Processor.process_deleteApplicationModule
-        self._processMap["registerApplicationDeployment"] = Processor.process_registerApplicationDeployment
-        self._processMap["getApplicationDeployment"] = Processor.process_getApplicationDeployment
-        self._processMap["updateApplicationDeployment"] = Processor.process_updateApplicationDeployment
-        self._processMap["deleteApplicationDeployment"] = Processor.process_deleteApplicationDeployment
-        self._processMap["getAllApplicationDeployments"] = Processor.process_getAllApplicationDeployments
-        self._processMap["getAppModuleDeployedResources"] = Processor.process_getAppModuleDeployedResources
-        self._processMap["registerApplicationInterface"] = Processor.process_registerApplicationInterface
-        self._processMap["cloneApplicationInterface"] = Processor.process_cloneApplicationInterface
-        self._processMap["getApplicationInterface"] = Processor.process_getApplicationInterface
-        self._processMap["updateApplicationInterface"] = Processor.process_updateApplicationInterface
-        self._processMap["deleteApplicationInterface"] = Processor.process_deleteApplicationInterface
-        self._processMap["getAllApplicationInterfaceNames"] = Processor.process_getAllApplicationInterfaceNames
-        self._processMap["getAllApplicationInterfaces"] = Processor.process_getAllApplicationInterfaces
-        self._processMap["getApplicationInputs"] = Processor.process_getApplicationInputs
-        self._processMap["getApplicationOutputs"] = Processor.process_getApplicationOutputs
-        self._processMap["getAvailableAppInterfaceComputeResources"] = Processor.process_getAvailableAppInterfaceComputeResources
-        self._processMap["registerComputeResource"] = Processor.process_registerComputeResource
-        self._processMap["getComputeResource"] = Processor.process_getComputeResource
-        self._processMap["getAllComputeResourceNames"] = Processor.process_getAllComputeResourceNames
-        self._processMap["updateComputeResource"] = Processor.process_updateComputeResource
-        self._processMap["deleteComputeResource"] = Processor.process_deleteComputeResource
-        self._processMap["registerStorageResource"] = Processor.process_registerStorageResource
-        self._processMap["getStorageResource"] = Processor.process_getStorageResource
-        self._processMap["getAllStorageResourceNames"] = Processor.process_getAllStorageResourceNames
-        self._processMap["updateStorageResource"] = Processor.process_updateStorageResource
-        self._processMap["deleteStorageResource"] = Processor.process_deleteStorageResource
-        self._processMap["addLocalSubmissionDetails"] = Processor.process_addLocalSubmissionDetails
-        self._processMap["updateLocalSubmissionDetails"] = Processor.process_updateLocalSubmissionDetails
-        self._processMap["getLocalJobSubmission"] = Processor.process_getLocalJobSubmission
-        self._processMap["addSSHJobSubmissionDetails"] = Processor.process_addSSHJobSubmissionDetails
-        self._processMap["addSSHForkJobSubmissionDetails"] = Processor.process_addSSHForkJobSubmissionDetails
-        self._processMap["getSSHJobSubmission"] = Processor.process_getSSHJobSubmission
-        self._processMap["addUNICOREJobSubmissionDetails"] = Processor.process_addUNICOREJobSubmissionDetails
-        self._processMap["getUnicoreJobSubmission"] = Processor.process_getUnicoreJobSubmission
-        self._processMap["addCloudJobSubmissionDetails"] = Processor.process_addCloudJobSubmissionDetails
-        self._processMap["getCloudJobSubmission"] = Processor.process_getCloudJobSubmission
-        self._processMap["updateSSHJobSubmissionDetails"] = Processor.process_updateSSHJobSubmissionDetails
-        self._processMap["updateCloudJobSubmissionDetails"] = Processor.process_updateCloudJobSubmissionDetails
-        self._processMap["updateUnicoreJobSubmissionDetails"] = Processor.process_updateUnicoreJobSubmissionDetails
-        self._processMap["addLocalDataMovementDetails"] = Processor.process_addLocalDataMovementDetails
-        self._processMap["updateLocalDataMovementDetails"] = Processor.process_updateLocalDataMovementDetails
-        self._processMap["getLocalDataMovement"] = Processor.process_getLocalDataMovement
-        self._processMap["addSCPDataMovementDetails"] = Processor.process_addSCPDataMovementDetails
-        self._processMap["updateSCPDataMovementDetails"] = Processor.process_updateSCPDataMovementDetails
-        self._processMap["getSCPDataMovement"] = Processor.process_getSCPDataMovement
-        self._processMap["addUnicoreDataMovementDetails"] = Processor.process_addUnicoreDataMovementDetails
-        self._processMap["updateUnicoreDataMovementDetails"] = Processor.process_updateUnicoreDataMovementDetails
-        self._processMap["getUnicoreDataMovement"] = Processor.process_getUnicoreDataMovement
-        self._processMap["addGridFTPDataMovementDetails"] = Processor.process_addGridFTPDataMovementDetails
-        self._processMap["updateGridFTPDataMovementDetails"] = Processor.process_updateGridFTPDataMovementDetails
-        self._processMap["getGridFTPDataMovement"] = Processor.process_getGridFTPDataMovement
-        self._processMap["changeJobSubmissionPriority"] = Processor.process_changeJobSubmissionPriority
-        self._processMap["changeDataMovementPriority"] = Processor.process_changeDataMovementPriority
-        self._processMap["changeJobSubmissionPriorities"] = Processor.process_changeJobSubmissionPriorities
-        self._processMap["changeDataMovementPriorities"] = Processor.process_changeDataMovementPriorities
-        self._processMap["deleteJobSubmissionInterface"] = Processor.process_deleteJobSubmissionInterface
-        self._processMap["deleteDataMovementInterface"] = Processor.process_deleteDataMovementInterface
-        self._processMap["registerResourceJobManager"] = Processor.process_registerResourceJobManager
-        self._processMap["updateResourceJobManager"] = Processor.process_updateResourceJobManager
-        self._processMap["getResourceJobManager"] = Processor.process_getResourceJobManager
-        self._processMap["deleteResourceJobManager"] = Processor.process_deleteResourceJobManager
-        self._processMap["deleteBatchQueue"] = Processor.process_deleteBatchQueue
-        self._processMap["registerGatewayResourceProfile"] = Processor.process_registerGatewayResourceProfile
-        self._processMap["getGatewayResourceProfile"] = Processor.process_getGatewayResourceProfile
-        self._processMap["updateGatewayResourceProfile"] = Processor.process_updateGatewayResourceProfile
-        self._processMap["deleteGatewayResourceProfile"] = Processor.process_deleteGatewayResourceProfile
-        self._processMap["addGatewayComputeResourcePreference"] = Processor.process_addGatewayComputeResourcePreference
-        self._processMap["addGatewayStoragePreference"] = Processor.process_addGatewayStoragePreference
-        self._processMap["getGatewayComputeResourcePreference"] = Processor.process_getGatewayComputeResourcePreference
-        self._processMap["getGatewayStoragePreference"] = Processor.process_getGatewayStoragePreference
-        self._processMap["getAllGatewayComputeResourcePreferences"] = Processor.process_getAllGatewayComputeResourcePreferences
-        self._processMap["getAllGatewayStoragePreferences"] = Processor.process_getAllGatewayStoragePreferences
-        self._processMap["getAllGatewayResourceProfiles"] = Processor.process_getAllGatewayResourceProfiles
-        self._processMap["updateGatewayComputeResourcePreference"] = Processor.process_updateGatewayComputeResourcePreference
-        self._processMap["updateGatewayStoragePreference"] = Processor.process_updateGatewayStoragePreference
-        self._processMap["deleteGatewayComputeResourcePreference"] = Processor.process_deleteGatewayComputeResourcePreference
-        self._processMap["deleteGatewayStoragePreference"] = Processor.process_deleteGatewayStoragePreference
-        self._processMap["getSSHAccountProvisioners"] = Processor.process_getSSHAccountProvisioners
-        self._processMap["doesUserHaveSSHAccount"] = Processor.process_doesUserHaveSSHAccount
-        self._processMap["setupUserComputeResourcePreferencesForSSH"] = Processor.process_setupUserComputeResourcePreferencesForSSH
-        self._processMap["registerUserResourceProfile"] = Processor.process_registerUserResourceProfile
-        self._processMap["getUserResourceProfile"] = Processor.process_getUserResourceProfile
-        self._processMap["updateUserResourceProfile"] = Processor.process_updateUserResourceProfile
-        self._processMap["deleteUserResourceProfile"] = Processor.process_deleteUserResourceProfile
-        self._processMap["addUserComputeResourcePreference"] = Processor.process_addUserComputeResourcePreference
-        self._processMap["addUserStoragePreference"] = Processor.process_addUserStoragePreference
-        self._processMap["getUserComputeResourcePreference"] = Processor.process_getUserComputeResourcePreference
-        self._processMap["getUserStoragePreference"] = Processor.process_getUserStoragePreference
-        self._processMap["getAllUserComputeResourcePreferences"] = Processor.process_getAllUserComputeResourcePreferences
-        self._processMap["getAllUserStoragePreferences"] = Processor.process_getAllUserStoragePreferences
-        self._processMap["getAllUserResourceProfiles"] = Processor.process_getAllUserResourceProfiles
-        self._processMap["updateUserComputeResourcePreference"] = Processor.process_updateUserComputeResourcePreference
-        self._processMap["updateUserStoragePreference"] = Processor.process_updateUserStoragePreference
-        self._processMap["deleteUserComputeResourcePreference"] = Processor.process_deleteUserComputeResourcePreference
-        self._processMap["deleteUserStoragePreference"] = Processor.process_deleteUserStoragePreference
-        self._processMap["getAllWorkflows"] = Processor.process_getAllWorkflows
-        self._processMap["getLatestQueueStatuses"] = Processor.process_getLatestQueueStatuses
-        self._processMap["getWorkflow"] = Processor.process_getWorkflow
-        self._processMap["deleteWorkflow"] = Processor.process_deleteWorkflow
-        self._processMap["registerWorkflow"] = Processor.process_registerWorkflow
-        self._processMap["updateWorkflow"] = Processor.process_updateWorkflow
-        self._processMap["getWorkflowTemplateId"] = Processor.process_getWorkflowTemplateId
-        self._processMap["isWorkflowExistWithName"] = Processor.process_isWorkflowExistWithName
-        self._processMap["registerDataProduct"] = Processor.process_registerDataProduct
-        self._processMap["getDataProduct"] = Processor.process_getDataProduct
-        self._processMap["registerReplicaLocation"] = Processor.process_registerReplicaLocation
-        self._processMap["getParentDataProduct"] = Processor.process_getParentDataProduct
-        self._processMap["getChildDataProducts"] = Processor.process_getChildDataProducts
-        self._processMap["shareResourceWithUsers"] = Processor.process_shareResourceWithUsers
-        self._processMap["revokeSharingOfResourceFromUsers"] = Processor.process_revokeSharingOfResourceFromUsers
-        self._processMap["getAllAccessibleUsers"] = Processor.process_getAllAccessibleUsers
+    def send_createGroupResourceProfile(self, authzToken, groupResourceProfile):
+        self._oprot.writeMessageBegin('createGroupResourceProfile', TMessageType.CALL, self._seqid)
+        args = createGroupResourceProfile_args()
+        args.authzToken = authzToken
+        args.groupResourceProfile = groupResourceProfile
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
 
-    def process(self, iprot, oprot):
-        (name, type, seqid) = iprot.readMessageBegin()
-        if name not in self._processMap:
-            iprot.skip(TType.STRUCT)
+    def recv_createGroupResourceProfile(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
             iprot.readMessageEnd()
-            x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name))
-            oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid)
-            x.write(oprot)
-            oprot.writeMessageEnd()
-            oprot.trans.flush()
-            return
-        else:
-            self._processMap[name](self, seqid, iprot, oprot)
-        return True
-
-    def process_getAPIVersion(self, seqid, iprot, oprot):
-        args = getAPIVersion_args()
-        args.read(iprot)
+            raise x
+        result = createGroupResourceProfile_result()
+        result.read(iprot)
         iprot.readMessageEnd()
-        result = getAPIVersion_result()
-        try:
-            result.success = self._handler.getAPIVersion(args.authzToken)
-            msg_type = TMessageType.REPLY
-        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-            raise
-        except airavata.api.error.ttypes.InvalidRequestException as ire:
-            msg_type = TMessageType.REPLY
-            result.ire = ire
-        except airavata.api.error.ttypes.AiravataClientException as ace:
-            msg_type = TMessageType.REPLY
-            result.ace = ace
-        except airavata.api.error.ttypes.AiravataSystemException as ase:
-            msg_type = TMessageType.REPLY
-            result.ase = ase
-        except airavata.api.error.ttypes.AuthorizationException as ae:
-            msg_type = TMessageType.REPLY
-            result.ae = ae
-        except Exception as ex:
-            msg_type = TMessageType.EXCEPTION
-            logging.exception(ex)
-            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAPIVersion", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+        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
+        return
 
-    def process_isUserExists(self, seqid, iprot, oprot):
-        args = isUserExists_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = isUserExists_result()
-        try:
-            result.success = self._handler.isUserExists(args.authzToken, args.gatewayId, 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("isUserExists", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def updateGroupResourceProfile(self, authzToken, groupResourceProfile):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfile
+        """
+        self.send_updateGroupResourceProfile(authzToken, groupResourceProfile)
+        self.recv_updateGroupResourceProfile()
 
-    def process_addGateway(self, seqid, iprot, oprot):
-        args = addGateway_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = addGateway_result()
-        try:
-            result.success = self._handler.addGateway(args.authzToken, args.gateway)
-            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("addGateway", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def send_updateGroupResourceProfile(self, authzToken, groupResourceProfile):
+        self._oprot.writeMessageBegin('updateGroupResourceProfile', TMessageType.CALL, self._seqid)
+        args = updateGroupResourceProfile_args()
+        args.authzToken = authzToken
+        args.groupResourceProfile = groupResourceProfile
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
 
-    def process_getAllUsersInGateway(self, seqid, iprot, oprot):
-        args = getAllUsersInGateway_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = getAllUsersInGateway_result()
-        try:
-            result.success = self._handler.getAllUsersInGateway(args.authzToken, args.gatewayId)
-            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("getAllUsersInGateway", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
-
-    def process_updateGateway(self, seqid, iprot, oprot):
-        args = updateGateway_args()
-        args.read(iprot)
+    def recv_updateGroupResourceProfile(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateGroupResourceProfile_result()
+        result.read(iprot)
         iprot.readMessageEnd()
-        result = updateGateway_result()
-        try:
-            result.success = self._handler.updateGateway(args.authzToken, args.gatewayId, args.updatedGateway)
-            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("updateGateway", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+        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
+        return
 
-    def process_getGateway(self, seqid, iprot, oprot):
-        args = getGateway_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = getGateway_result()
-        try:
-            result.success = self._handler.getGateway(args.authzToken, args.gatewayId)
-            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("getGateway", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def getGroupResourceProfile(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        self.send_getGroupResourceProfile(authzToken, groupResourceProfileId)
+        return self.recv_getGroupResourceProfile()
 
-    def process_deleteGateway(self, seqid, iprot, oprot):
-        args = deleteGateway_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = deleteGateway_result()
-        try:
-            result.success = self._handler.deleteGateway(args.authzToken, args.gatewayId)
-            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("deleteGateway", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def send_getGroupResourceProfile(self, authzToken, groupResourceProfileId):
+        self._oprot.writeMessageBegin('getGroupResourceProfile', TMessageType.CALL, self._seqid)
+        args = getGroupResourceProfile_args()
+        args.authzToken = authzToken
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
 
-    def process_getAllGateways(self, seqid, iprot, oprot):
-        args = getAllGateways_args()
-        args.read(iprot)
+    def recv_getGroupResourceProfile(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupResourceProfile_result()
+        result.read(iprot)
         iprot.readMessageEnd()
-        result = getAllGateways_result()
-        try:
-            result.success = self._handler.getAllGateways(args.authzToken)
-            msg_type = TMessageType.REPLY
-        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
-            raise
-        except airavata.api.error.ttypes.InvalidRequestException as ire:
-            msg_type = TMessageType.REPLY
-            result.ire = ire
-        except airavata.api.error.ttypes.AiravataClientException as ace:
-            msg_type = TMessageType.REPLY
-            result.ace = ace
-        except airavata.api.error.ttypes.AiravataSystemException as ase:
-            msg_type = TMessageType.REPLY
-            result.ase = ase
-        except airavata.api.error.ttypes.AuthorizationException as ae:
-            msg_type = TMessageType.REPLY
-            result.ae = ae
-        except Exception as ex:
-            msg_type = TMessageType.EXCEPTION
-            logging.exception(ex)
-            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllGateways", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+        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, "getGroupResourceProfile failed: unknown result")
 
-    def process_isGatewayExist(self, seqid, iprot, oprot):
-        args = isGatewayExist_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = isGatewayExist_result()
-        try:
-            result.success = self._handler.isGatewayExist(args.authzToken, args.gatewayId)
-            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("isGatewayExist", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def removeGroupResourceProfile(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        self.send_removeGroupResourceProfile(authzToken, groupResourceProfileId)
+        return self.recv_removeGroupResourceProfile()
 
-    def process_createNotification(self, seqid, iprot, oprot):
-        args = createNotification_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = createNotification_result()
-        try:
-            result.success = self._handler.createNotification(args.authzToken, args.notification)
-            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("createNotification", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def send_removeGroupResourceProfile(self, authzToken, groupResourceProfileId):
+        self._oprot.writeMessageBegin('removeGroupResourceProfile', TMessageType.CALL, self._seqid)
+        args = removeGroupResourceProfile_args()
+        args.authzToken = authzToken
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
 
-    def process_updateNotification(self, seqid, iprot, oprot):
-        args = updateNotification_args()
-        args.read(iprot)
+    def recv_removeGroupResourceProfile(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = removeGroupResourceProfile_result()
+        result.read(iprot)
         iprot.readMessageEnd()
-        result = updateNotification_result()
-        try:
-            result.success = self._handler.updateNotification(args.authzToken, args.notification)
-            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("updateNotification", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+        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, "removeGroupResourceProfile failed: unknown result")
 
-    def process_deleteNotification(self, seqid, iprot, oprot):
-        args = deleteNotification_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = deleteNotification_result()
-        try:
-            result.success = self._handler.deleteNotification(args.authzToken, args.gatewayId, args.notificationId)
-            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("deleteNotification", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def getGroupResourceList(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getGroupResourceList(authzToken, gatewayId)
+        return self.recv_getGroupResourceList()
 
-    def process_getNotification(self, seqid, iprot, oprot):
-        args = getNotification_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = getNotification_result()
-        try:
-            result.success = self._handler.getNotification(args.authzToken, args.gatewayId, args.notificationId)
-            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("getNotification", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def send_getGroupResourceList(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getGroupResourceList', TMessageType.CALL, self._seqid)
+        args = getGroupResourceList_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
 
-    def process_getAllNotifications(self, seqid, iprot, oprot):
-        args = getAllNotifications_args()
-        args.read(iprot)
+    def recv_getGroupResourceList(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupResourceList_result()
+        result.read(iprot)
         iprot.readMessageEnd()
-        result = getAllNotifications_result()
-        try:
-            result.success = self._handler.getAllNotifications(args.authzToken, args.gatewayId)
-            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("getAllNotifications", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+        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, "getGroupResourceList failed: unknown result")
 
-    def process_generateAndRegisterSSHKeys(self, seqid, iprot, oprot):
-        args = generateAndRegisterSSHKeys_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = generateAndRegisterSSHKeys_result()
-        try:
-            result.success = self._handler.generateAndRegisterSSHKeys(args.authzToken, args.gatewayId, args.userName, args.description, args.credentialOwnerType)
-            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 Exception as ex:
-            msg_type = TMessageType.EXCEPTION
-            logging.exception(ex)
-            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("generateAndRegisterSSHKeys", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def removeGroupComputePrefs(self, authzToken, computeResourceId, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - groupResourceProfileId
+        """
+        self.send_removeGroupComputePrefs(authzToken, computeResourceId, groupResourceProfileId)
+        return self.recv_removeGroupComputePrefs()
 
-    def process_registerPwdCredential(self, seqid, iprot, oprot):
-        args = registerPwdCredential_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = registerPwdCredential_result()
-        try:
-            result.success = self._handler.registerPwdCredential(args.authzToken, args.gatewayId, args.portalUserName, args.loginUserName, args.password, args.description)
-            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 Exception as ex:
-            msg_type = TMessageType.EXCEPTION
-            logging.exception(ex)
-            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("registerPwdCredential", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def send_removeGroupComputePrefs(self, authzToken, computeResourceId, groupResourceProfileId):
+        self._oprot.writeMessageBegin('removeGroupComputePrefs', TMessageType.CALL, self._seqid)
+        args = removeGroupComputePrefs_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
 
-    def process_getSSHPubKey(self, seqid, iprot, oprot):
-        args = getSSHPubKey_args()
-        args.read(iprot)
+    def recv_removeGroupComputePrefs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = removeGroupComputePrefs_result()
+        result.read(iprot)
         iprot.readMessageEnd()
-        result = getSSHPubKey_result()
-        try:
-            result.success = self._handler.getSSHPubKey(args.authzToken, args.airavataCredStoreToken, args.gatewayId)
-            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 Exception as ex:
-            msg_type = TMessageType.EXCEPTION
-            logging.exception(ex)
-            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getSSHPubKey", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+        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, "removeGroupComputePrefs failed: unknown result")
 
-    def process_getAllGatewaySSHPubKeys(self, seqid, iprot, oprot):
-        args = getAllGatewaySSHPubKeys_args()
+    def removeGroupComputeResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        self.send_removeGroupComputeResourcePolicy(authzToken, resourcePolicyId)
+        return self.recv_removeGroupComputeResourcePolicy()
+
+    def send_removeGroupComputeResourcePolicy(self, authzToken, resourcePolicyId):
+        self._oprot.writeMessageBegin('removeGroupComputeResourcePolicy', TMessageType.CALL, self._seqid)
+        args = removeGroupComputeResourcePolicy_args()
+        args.authzToken = authzToken
+        args.resourcePolicyId = resourcePolicyId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_removeGroupComputeResourcePolicy(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = removeGroupComputeResourcePolicy_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, "removeGroupComputeResourcePolicy failed: unknown result")
+
+    def removeGroupBatchQueueResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        self.send_removeGroupBatchQueueResourcePolicy(authzToken, resourcePolicyId)
+        return self.recv_removeGroupBatchQueueResourcePolicy()
+
+    def send_removeGroupBatchQueueResourcePolicy(self, authzToken, resourcePolicyId):
+        self._oprot.writeMessageBegin('removeGroupBatchQueueResourcePolicy', TMessageType.CALL, self._seqid)
+        args = removeGroupBatchQueueResourcePolicy_args()
+        args.authzToken = authzToken
+        args.resourcePolicyId = resourcePolicyId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_removeGroupBatchQueueResourcePolicy(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = removeGroupBatchQueueResourcePolicy_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, "removeGroupBatchQueueResourcePolicy failed: unknown result")
+
+    def getGroupComputeResourcePreference(self, authzToken, computeResourceId, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - groupResourceProfileId
+        """
+        self.send_getGroupComputeResourcePreference(authzToken, computeResourceId, groupResourceProfileId)
+        return self.recv_getGroupComputeResourcePreference()
+
+    def send_getGroupComputeResourcePreference(self, authzToken, computeResourceId, groupResourceProfileId):
+        self._oprot.writeMessageBegin('getGroupComputeResourcePreference', TMessageType.CALL, self._seqid)
+        args = getGroupComputeResourcePreference_args()
+        args.authzToken = authzToken
+        args.computeResourceId = computeResourceId
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGroupComputeResourcePreference(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupComputeResourcePreference_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, "getGroupComputeResourcePreference failed: unknown result")
+
+    def getGroupComputeResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        self.send_getGroupComputeResourcePolicy(authzToken, resourcePolicyId)
+        return self.recv_getGroupComputeResourcePolicy()
+
+    def send_getGroupComputeResourcePolicy(self, authzToken, resourcePolicyId):
+        self._oprot.writeMessageBegin('getGroupComputeResourcePolicy', TMessageType.CALL, self._seqid)
+        args = getGroupComputeResourcePolicy_args()
+        args.authzToken = authzToken
+        args.resourcePolicyId = resourcePolicyId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGroupComputeResourcePolicy(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupComputeResourcePolicy_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, "getGroupComputeResourcePolicy failed: unknown result")
+
+    def getBatchQueueResourcePolicy(self, authzToken, resourcePolicyId):
+        """
+        Parameters:
+         - authzToken
+         - resourcePolicyId
+        """
+        self.send_getBatchQueueResourcePolicy(authzToken, resourcePolicyId)
+        return self.recv_getBatchQueueResourcePolicy()
+
+    def send_getBatchQueueResourcePolicy(self, authzToken, resourcePolicyId):
+        self._oprot.writeMessageBegin('getBatchQueueResourcePolicy', TMessageType.CALL, self._seqid)
+        args = getBatchQueueResourcePolicy_args()
+        args.authzToken = authzToken
+        args.resourcePolicyId = resourcePolicyId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getBatchQueueResourcePolicy(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getBatchQueueResourcePolicy_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, "getBatchQueueResourcePolicy failed: unknown result")
+
+    def getGroupComputeResourcePrefList(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        self.send_getGroupComputeResourcePrefList(authzToken, groupResourceProfileId)
+        return self.recv_getGroupComputeResourcePrefList()
+
+    def send_getGroupComputeResourcePrefList(self, authzToken, groupResourceProfileId):
+        self._oprot.writeMessageBegin('getGroupComputeResourcePrefList', TMessageType.CALL, self._seqid)
+        args = getGroupComputeResourcePrefList_args()
+        args.authzToken = authzToken
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGroupComputeResourcePrefList(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupComputeResourcePrefList_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, "getGroupComputeResourcePrefList failed: unknown result")
+
+    def getGroupBatchQueueResourcePolicyList(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        self.send_getGroupBatchQueueResourcePolicyList(authzToken, groupResourceProfileId)
+        return self.recv_getGroupBatchQueueResourcePolicyList()
+
+    def send_getGroupBatchQueueResourcePolicyList(self, authzToken, groupResourceProfileId):
+        self._oprot.writeMessageBegin('getGroupBatchQueueResourcePolicyList', TMessageType.CALL, self._seqid)
+        args = getGroupBatchQueueResourcePolicyList_args()
+        args.authzToken = authzToken
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGroupBatchQueueResourcePolicyList(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupBatchQueueResourcePolicyList_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, "getGroupBatchQueueResourcePolicyList failed: unknown result")
+
+    def getGroupComputeResourcePolicyList(self, authzToken, groupResourceProfileId):
+        """
+        Parameters:
+         - authzToken
+         - groupResourceProfileId
+        """
+        self.send_getGroupComputeResourcePolicyList(authzToken, groupResourceProfileId)
+        return self.recv_getGroupComputeResourcePolicyList()
+
+    def send_getGroupComputeResourcePolicyList(self, authzToken, groupResourceProfileId):
+        self._oprot.writeMessageBegin('getGroupComputeResourcePolicyList', TMessageType.CALL, self._seqid)
+        args = getGroupComputeResourcePolicyList_args()
+        args.authzToken = authzToken
+        args.groupResourceProfileId = groupResourceProfileId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGroupComputeResourcePolicyList(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGroupComputeResourcePolicyList_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, "getGroupComputeResourcePolicyList failed: unknown result")
+
+
+class Processor(Iface, TProcessor):
+    def __init__(self, handler):
+        self._handler = handler
+        self._processMap = {}
+        self._processMap["getAPIVersion"] = Processor.process_getAPIVersion
+        self._processMap["isUserExists"] = Processor.process_isUserExists
+        self._processMap["addGateway"] = Processor.process_addGateway
+        self._processMap["getAllUsersInGateway"] = Processor.process_getAllUsersInGateway
+        self._processMap["updateGateway"] = Processor.process_updateGateway
+        self._processMap["getGateway"] = Processor.process_getGateway
+        self._processMap["deleteGateway"] = Processor.process_deleteGateway
+        self._processMap["getAllGateways"] = Processor.process_getAllGateways
+        self._processMap["isGatewayExist"] = Processor.process_isGatewayExist
+        self._processMap["createNotification"] = Processor.process_createNotification
+        self._processMap["updateNotification"] = Processor.process_updateNotification
+        self._processMap["deleteNotification"] = Processor.process_deleteNotification
+        self._processMap["getNotification"] = Processor.process_getNotification
+        self._processMap["getAllNotifications"] = Processor.process_getAllNotifications
+        self._processMap["generateAndRegisterSSHKeys"] = Processor.process_generateAndRegisterSSHKeys
+        self._processMap["registerPwdCredential"] = Processor.process_registerPwdCredential
+        self._processMap["getSSHPubKey"] = Processor.process_getSSHPubKey
+        self._processMap["getAllGatewaySSHPubKeys"] = Processor.process_getAllGatewaySSHPubKeys
+        self._processMap["getAllCredentialSummaryForGateway"] = Processor.process_getAllCredentialSummaryForGateway
+        self._processMap["getAllCredentialSummaryForUsersInGateway"] = Processor.process_getAllCredentialSummaryForUsersInGateway
+        self._processMap["getAllGatewayPWDCredentials"] = Processor.process_getAllGatewayPWDCredentials
+        self._processMap["deleteSSHPubKey"] = Processor.process_deleteSSHPubKey
+        self._processMap["deletePWDCredential"] = Processor.process_deletePWDCredential
+        self._processMap["createProject"] = Processor.process_createProject
+        self._processMap["updateProject"] = Processor.process_updateProject
+        self._processMap["getProject"] = Processor.process_getProject
+        self._processMap["deleteProject"] = Processor.process_deleteProject
+        self._processMap["getUserProjects"] = Processor.process_getUserProjects
+        self._processMap["searchProjects"] = Processor.process_searchProjects
+        self._processMap["searchExperiments"] = Processor.process_searchExperiments
+        self._processMap["getExperimentStatistics"] = Processor.process_getExperimentStatistics
+        self._processMap["getExperimentsInProject"] = Processor.process_getExperimentsInProject
+        self._processMap["getUserExperiments"] = Processor.process_getUserExperiments
+        self._processMap["createExperiment"] = Processor.process_createExperiment
+        self._processMap["deleteExperiment"] = Processor.process_deleteExperiment
+        self._processMap["getExperiment"] = Processor.process_getExperiment
+        self._processMap["getExperimentByAdmin"] = Processor.process_getExperimentByAdmin
+        self._processMap["getDetailedExperimentTree"] = Processor.process_getDetailedExperimentTree
+        self._processMap["updateExperiment"] = Processor.process_updateExperiment
+        self._processMap["updateExperimentConfiguration"] = Processor.process_updateExperimentConfiguration
+        self._processMap["updateResourceScheduleing"] = Processor.process_updateResourceScheduleing
+        self._processMap["validateExperiment"] = Processor.process_validateExperiment
+        self._processMap["launchExperiment"] = Processor.process_launchExperiment
+        self._processMap["getExperimentStatus"] = Processor.process_getExperimentStatus
+        self._processMap["getExperimentOutputs"] = Processor.process_getExperimentOutputs
+        self._processMap["getIntermediateOutputs"] = Processor.process_getIntermediateOutputs
+        self._processMap["getJobStatuses"] = Processor.process_getJobStatuses
+        self._processMap["getJobDetails"] = Processor.process_getJobDetails
+        self._processMap["cloneExperiment"] = Processor.process_cloneExperiment
+        self._processMap["cloneExperimentByAdmin"] = Processor.process_cloneExperimentByAdmin
+        self._processMap["terminateExperiment"] = Processor.process_terminateExperiment
+        self._processMap["registerApplicationModule"] = Processor.process_registerApplicationModule
+        self._processMap["getApplicationModule"] = Processor.process_getApplicationModule
+        self._processMap["updateApplicationModule"] = Processor.process_updateApplicationModule
+        self._processMap["getAllAppModules"] = Processor.process_getAllAppModules
+        self._processMap["getAccessibleAppModules"] = Processor.process_getAccessibleAppModules
+        self._processMap["deleteApplicationModule"] = Processor.process_deleteApplicationModule
+        self._processMap["registerApplicationDeployment"] = Processor.process_registerApplicationDeployment
+        self._processMap["getApplicationDeployment"] = Processor.process_getApplicationDeployment
+        self._processMap["updateApplicationDeployment"] = Processor.process_updateApplicationDeployment
+        self._processMap["deleteApplicationDeployment"] = Processor.process_deleteApplicationDeployment
+        self._processMap["getAllApplicationDeployments"] = Processor.process_getAllApplicationDeployments
+        self._processMap["getAccessibleApplicationDeployments"] = Processor.process_getAccessibleApplicationDeployments
+        self._processMap["getAppModuleDeployedResources"] = Processor.process_getAppModuleDeployedResources
+        self._processMap["registerApplicationInterface"] = Processor.process_registerApplicationInterface
+        self._processMap["cloneApplicationInterface"] = Processor.process_cloneApplicationInterface
+        self._processMap["getApplicationInterface"] = Processor.process_getApplicationInterface
+        self._processMap["updateApplicationInterface"] = Processor.process_updateApplicationInterface
+        self._processMap["deleteApplicationInterface"] = Processor.process_deleteApplicationInterface
+        self._processMap["getAllApplicationInterfaceNames"] = Processor.process_getAllApplicationInterfaceNames
+        self._processMap["getAllApplicationInterfaces"] = Processor.process_getAllApplicationInterfaces
+        self._processMap["getApplicationInputs"] = Processor.process_getApplicationInputs
+        self._processMap["getApplicationOutputs"] = Processor.process_getApplicationOutputs
+        self._processMap["getAvailableAppInterfaceComputeResources"] = Processor.process_getAvailableAppInterfaceComputeResources
+        self._processMap["registerComputeResource"] = Processor.process_registerComputeResource
+        self._processMap["getComputeResource"] = Processor.process_getComputeResource
+        self._processMap["getAllComputeResourceNames"] = Processor.process_getAllComputeResourceNames
+        self._processMap["updateComputeResource"] = Processor.process_updateComputeResource
+        self._processMap["deleteComputeResource"] = Processor.process_deleteComputeResource
+        self._processMap["registerStorageResource"] = Processor.process_registerStorageResource
+        self._processMap["getStorageResource"] = Processor.process_getStorageResource
+        self._processMap["getAllStorageResourceNames"] = Processor.process_getAllStorageResourceNames
+        self._processMap["updateStorageResource"] = Processor.process_updateStorageResource
+        self._processMap["deleteStorageResource"] = Processor.process_deleteStorageResource
+        self._processMap["addLocalSubmissionDetails"] = Processor.process_addLocalSubmissionDetails
+        self._processMap["updateLocalSubmissionDetails"] = Processor.process_updateLocalSubmissionDetails
+        self._processMap["getLocalJobSubmission"] = Processor.process_getLocalJobSubmission
+        self._processMap["addSSHJobSubmissionDetails"] = Processor.process_addSSHJobSubmissionDetails
+        self._processMap["addSSHForkJobSubmissionDetails"] = Processor.process_addSSHForkJobSubmissionDetails
+        self._processMap["getSSHJobSubmission"] = Processor.process_getSSHJobSubmission
+        self._processMap["addUNICOREJobSubmissionDetails"] = Processor.process_addUNICOREJobSubmissionDetails
+        self._processMap["getUnicoreJobSubmission"] = Processor.process_getUnicoreJobSubmission
+        self._processMap["addCloudJobSubmissionDetails"] = Processor.process_addCloudJobSubmissionDetails
+        self._processMap["getCloudJobSubmission"] = Processor.process_getCloudJobSubmission
+        self._processMap["updateSSHJobSubmissionDetails"] = Processor.process_updateSSHJobSubmissionDetails
+        self._processMap["updateCloudJobSubmissionDetails"] = Processor.process_updateCloudJobSubmissionDetails
+        self._processMap["updateUnicoreJobSubmissionDetails"] = Processor.process_updateUnicoreJobSubmissionDetails
+        self._processMap["addLocalDataMovementDetails"] = Processor.process_addLocalDataMovementDetails
+        self._processMap["updateLocalDataMovementDetails"] = Processor.process_updateLocalDataMovementDetails
+        self._processMap["getLocalDataMovement"] = Processor.process_getLocalDataMovement
+        self._processMap["addSCPDataMovementDetails"] = Processor.process_addSCPDataMovementDetails
+        self._processMap["updateSCPDataMovementDetails"] = Processor.process_updateSCPDataMovementDetails
+        self._processMap["getSCPDataMovement"] = Processor.process_getSCPDataMovement
+        self._processMap["addUnicoreDataMovementDetails"] = Processor.process_addUnicoreDataMovementDetails
+        self._processMap["updateUnicoreDataMovementDetails"] = Processor.process_updateUnicoreDataMovementDetails
+        self._processMap["getUnicoreDataMovement"] = Processor.process_getUnicoreDataMovement
+        self._processMap["addGridFTPDataMovementDetails"] = Processor.process_addGridFTPDataMovementDetails
+        self._processMap["updateGridFTPDataMovementDetails"] = Processor.process_updateGridFTPDataMovementDetails
+        self._processMap["getGridFTPDataMovement"] = Processor.process_getGridFTPDataMovement
+        self._processMap["changeJobSubmissionPriority"] = Processor.process_changeJobSubmissionPriority
+        self._processMap["changeDataMovementPriority"] = Processor.process_changeDataMovementPriority
+        self._processMap["changeJobSubmissionPriorities"] = Processor.process_changeJobSubmissionPriorities
+        self._processMap["changeDataMovementPriorities"] = Processor.process_changeDataMovementPriorities
+        self._processMap["deleteJobSubmissionInterface"] = Processor.process_deleteJobSubmissionInterface
+        self._processMap["deleteDataMovementInterface"] = Processor.process_deleteDataMovementInterface
+        self._processMap["registerResourceJobManager"] = Processor.process_registerResourceJobManager
+        self._processMap["updateResourceJobManager"] = Processor.process_updateResourceJobManager
+        self._processMap["getResourceJobManager"] = Processor.process_getResourceJobManager
+        self._processMap["deleteResourceJobManager"] = Processor.process_deleteResourceJobManager
+        self._processMap["deleteBatchQueue"] = Processor.process_deleteBatchQueue
+        self._processMap["registerGatewayResourceProfile"] = Processor.process_registerGatewayResourceProfile
+        self._processMap["getGatewayResourceProfile"] = Processor.process_getGatewayResourceProfile
+        self._processMap["updateGatewayResourceProfile"] = Processor.process_updateGatewayResourceProfile
+        self._processMap["deleteGatewayResourceProfile"] = Processor.process_deleteGatewayResourceProfile
+        self._processMap["addGatewayComputeResourcePreference"] = Processor.process_addGatewayComputeResourcePreference
+        self._processMap["addGatewayStoragePreference"] = Processor.process_addGatewayStoragePreference
+        self._processMap["getGatewayComputeResourcePreference"] = Processor.process_getGatewayComputeResourcePreference
+        self._processMap["getGatewayStoragePreference"] = Processor.process_getGatewayStoragePreference
+        self._processMap["getAllGatewayComputeResourcePreferences"] = Processor.process_getAllGatewayComputeResourcePreferences
+        self._processMap["getAllGatewayStoragePreferences"] = Processor.process_getAllGatewayStoragePreferences
+        self._processMap["getAllGatewayResourceProfiles"] = Processor.process_getAllGatewayResourceProfiles
+        self._processMap["updateGatewayComputeResourcePreference"] = Processor.process_updateGatewayComputeResourcePreference
+        self._processMap["updateGatewayStoragePreference"] = Processor.process_updateGatewayStoragePreference
+        self._processMap["deleteGatewayComputeResourcePreference"] = Processor.process_deleteGatewayComputeResourcePreference
+        self._processMap["deleteGatewayStoragePreference"] = Processor.process_deleteGatewayStoragePreference
+        self._processMap["getSSHAccountProvisioners"] = Processor.process_getSSHAccountProvisioners
+        self._processMap["doesUserHaveSSHAccount"] = Processor.process_doesUserHaveSSHAccount
+        self._processMap["setupUserComputeResourcePreferencesForSSH"] = Processor.process_setupUserComputeResourcePreferencesForSSH
+        self._processMap["registerUserResourceProfile"] = Processor.process_registerUserResourceProfile
+        self._processMap["getUserResourceProfile"] = Processor.process_getUserResourceProfile
+        self._processMap["updateUserResourceProfile"] = Processor.process_updateUserResourceProfile
+        self._processMap["deleteUserResourceProfile"] = Processor.process_deleteUserResourceProfile
+        self._processMap["addUserComputeResourcePreference"] = Processor.process_addUserComputeResourcePreference
+        self._processMap["addUserStoragePreference"] = Processor.process_addUserStoragePreference
+        self._processMap["getUserComputeResourcePreference"] = Processor.process_getUserComputeResourcePreference
+        self._processMap["getUserStoragePreference"] = Processor.process_getUserStoragePreference
+        self._processMap["getAllUserComputeResourcePreferences"] = Processor.process_getAllUserComputeResourcePreferences
+        self._processMap["getAllUserStoragePreferences"] = Processor.process_getAllUserStoragePreferences
+        self._processMap["getAllUserResourceProfiles"] = Processor.process_getAllUserResourceProfiles
+        self._processMap["updateUserComputeResourcePreference"] = Processor.process_updateUserComputeResourcePreference
+        self._processMap["updateUserStoragePreference"] = Processor.process_updateUserStoragePreference
+        self._processMap["deleteUserComputeResourcePreference"] = Processor.process_deleteUserComputeResourcePreference
+        self._processMap["deleteUserStoragePreference"] = Processor.process_deleteUserStoragePreference
+        self._processMap["getAllWorkflows"] = Processor.process_getAllWorkflows
+        self._processMap["getLatestQueueStatuses"] = Processor.process_getLatestQueueStatuses
+        self._processMap["getWorkflow"] = Processor.process_getWorkflow
+        self._processMap["deleteWorkflow"] = Processor.process_deleteWorkflow
+        self._processMap["registerWorkflow"] = Processor.process_registerWorkflow
+        self._processMap["updateWorkflow"] = Processor.process_updateWorkflow
+        self._processMap["getWorkflowTemplateId"] = Processor.process_getWorkflowTemplateId
+        self._processMap["isWorkflowExistWithName"] = Processor.process_isWorkflowExistWithName
+        self._processMap["registerDataProduct"] = Processor.process_registerDataProduct
+        self._processMap["getDataProduct"] = Processor.process_getDataProduct
+        self._processMap["registerReplicaLocation"] = Processor.process_registerReplicaLocation
+        self._processMap["getParentDataProduct"] = Processor.process_getParentDataProduct
+        self._processMap["getChildDataProducts"] = Processor.process_getChildDataProducts
+        self._processMap["shareResourceWithUsers"] = Processor.process_shareResourceWithUsers
+        self._processMap["revokeSharingOfResourceFromUsers"] = Processor.process_revokeSharingOfResourceFromUsers
+        self._processMap["getAllAccessibleUsers"] = Processor.process_getAllAccessibleUsers
+        self._processMap["createGroupResourceProfile"] = Processor.process_createGroupResourceProfile
+        self._processMap["updateGroupResourceProfile"] = Processor.process_updateGroupResourceProfile
+        self._processMap["getGroupResourceProfile"] = Processor.process_getGroupResourceProfile
+        self._processMap["removeGroupResourceProfile"] = Processor.process_removeGroupResourceProfile
+        self._processMap["getGroupResourceList"] = Processor.process_getGroupResourceList
+        self._processMap["removeGroupComputePrefs"] = Processor.process_removeGroupComputePrefs
+        self._processMap["removeGroupComputeResourcePolicy"] = Processor.process_removeGroupComputeResourcePolicy
+        self._processMap["removeGroupBatchQueueResourcePolicy"] = Processor.process_removeGroupBatchQueueResourcePolicy
+        self._processMap["getGroupComputeResourcePreference"] = Processor.process_getGroupComputeResourcePreference
+        self._processMap["getGroupComputeResourcePolicy"] = Processor.process_getGroupComputeResourcePolicy
+        self._processMap["getBatchQueueResourcePolicy"] = Processor.process_getBatchQueueResourcePolicy
+        self._processMap["getGroupComputeResourcePrefList"] = Processor.process_getGroupComputeResourcePrefList
+        self._processMap["getGroupBatchQueueResourcePolicyList"] = Processor.process_getGroupBatchQueueResourcePolicyList
+        self._processMap["getGroupComputeResourcePolicyList"] = Processor.process_getGroupComputeResourcePolicyList
+
+    def process(self, iprot, oprot):
+        (name, type, seqid) = iprot.readMessageBegin()
+        if name not in self._processMap:
+            iprot.skip(TType.STRUCT)
+            iprot.readMessageEnd()
+            x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name))
+            oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid)
+            x.write(oprot)
+            oprot.writeMessageEnd()
+            oprot.trans.flush()
+            return
+        else:
+            self._processMap[name](self, seqid, iprot, oprot)
+        return True
+
+    def process_getAPIVersion(self, seqid, iprot, oprot):
+        args = getAPIVersion_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllGatewaySSHPubKeys_result()
+        result = getAPIVersion_result()
         try:
-            result.success = self._handler.getAllGatewaySSHPubKeys(args.authzToken, args.gatewayId)
+            result.success = self._handler.getAPIVersion(args.authzToken)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13249,22 +13587,25 @@ class Processor(Iface, TProcessor):
         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("getAllGatewaySSHPubKeys", msg_type, seqid)
+        oprot.writeMessageBegin("getAPIVersion", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllCredentialSummaryForGateway(self, seqid, iprot, oprot):
-        args = getAllCredentialSummaryForGateway_args()
+    def process_isUserExists(self, seqid, iprot, oprot):
+        args = isUserExists_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllCredentialSummaryForGateway_result()
+        result = isUserExists_result()
         try:
-            result.success = self._handler.getAllCredentialSummaryForGateway(args.authzToken, args.type, args.gatewayId)
+            result.success = self._handler.isUserExists(args.authzToken, args.gatewayId, args.userName)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13277,22 +13618,25 @@ class Processor(Iface, TProcessor):
         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("getAllCredentialSummaryForGateway", msg_type, seqid)
+        oprot.writeMessageBegin("isUserExists", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllCredentialSummaryForUsersInGateway(self, seqid, iprot, oprot):
-        args = getAllCredentialSummaryForUsersInGateway_args()
+    def process_addGateway(self, seqid, iprot, oprot):
+        args = addGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllCredentialSummaryForUsersInGateway_result()
+        result = addGateway_result()
         try:
-            result.success = self._handler.getAllCredentialSummaryForUsersInGateway(args.authzToken, args.type, args.gatewayId, args.userId)
+            result.success = self._handler.addGateway(args.authzToken, args.gateway)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13305,22 +13649,25 @@ class Processor(Iface, TProcessor):
         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("getAllCredentialSummaryForUsersInGateway", msg_type, seqid)
+        oprot.writeMessageBegin("addGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllGatewayPWDCredentials(self, seqid, iprot, oprot):
-        args = getAllGatewayPWDCredentials_args()
+    def process_getAllUsersInGateway(self, seqid, iprot, oprot):
+        args = getAllUsersInGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllGatewayPWDCredentials_result()
+        result = getAllUsersInGateway_result()
         try:
-            result.success = self._handler.getAllGatewayPWDCredentials(args.authzToken, args.gatewayId)
+            result.success = self._handler.getAllUsersInGateway(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13333,22 +13680,25 @@ class Processor(Iface, TProcessor):
         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("getAllGatewayPWDCredentials", msg_type, seqid)
+        oprot.writeMessageBegin("getAllUsersInGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteSSHPubKey(self, seqid, iprot, oprot):
-        args = deleteSSHPubKey_args()
+    def process_updateGateway(self, seqid, iprot, oprot):
+        args = updateGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteSSHPubKey_result()
+        result = updateGateway_result()
         try:
-            result.success = self._handler.deleteSSHPubKey(args.authzToken, args.airavataCredStoreToken, args.gatewayId)
+            result.success = self._handler.updateGateway(args.authzToken, args.gatewayId, args.updatedGateway)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13361,22 +13711,25 @@ class Processor(Iface, TProcessor):
         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("deleteSSHPubKey", msg_type, seqid)
+        oprot.writeMessageBegin("updateGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deletePWDCredential(self, seqid, iprot, oprot):
-        args = deletePWDCredential_args()
+    def process_getGateway(self, seqid, iprot, oprot):
+        args = getGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deletePWDCredential_result()
+        result = getGateway_result()
         try:
-            result.success = self._handler.deletePWDCredential(args.authzToken, args.airavataCredStoreToken, args.gatewayId)
+            result.success = self._handler.getGateway(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13389,22 +13742,25 @@ class Processor(Iface, TProcessor):
         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("deletePWDCredential", msg_type, seqid)
+        oprot.writeMessageBegin("getGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_createProject(self, seqid, iprot, oprot):
-        args = createProject_args()
+    def process_deleteGateway(self, seqid, iprot, oprot):
+        args = deleteGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = createProject_result()
+        result = deleteGateway_result()
         try:
-            result.success = self._handler.createProject(args.authzToken, args.gatewayId, args.project)
+            result.success = self._handler.deleteGateway(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13424,18 +13780,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("createProject", msg_type, seqid)
+        oprot.writeMessageBegin("deleteGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateProject(self, seqid, iprot, oprot):
-        args = updateProject_args()
+    def process_getAllGateways(self, seqid, iprot, oprot):
+        args = getAllGateways_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateProject_result()
+        result = getAllGateways_result()
         try:
-            self._handler.updateProject(args.authzToken, args.projectId, args.updatedProject)
+            result.success = self._handler.getAllGateways(args.authzToken)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13448,9 +13804,6 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AiravataSystemException as ase:
             msg_type = TMessageType.REPLY
             result.ase = ase
-        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
-            msg_type = TMessageType.REPLY
-            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -13458,18 +13811,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateProject", msg_type, seqid)
+        oprot.writeMessageBegin("getAllGateways", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getProject(self, seqid, iprot, oprot):
-        args = getProject_args()
+    def process_isGatewayExist(self, seqid, iprot, oprot):
+        args = isGatewayExist_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getProject_result()
+        result = isGatewayExist_result()
         try:
-            result.success = self._handler.getProject(args.authzToken, args.projectId)
+            result.success = self._handler.isGatewayExist(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13482,9 +13835,6 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AiravataSystemException as ase:
             msg_type = TMessageType.REPLY
             result.ase = ase
-        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
-            msg_type = TMessageType.REPLY
-            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -13492,18 +13842,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getProject", msg_type, seqid)
+        oprot.writeMessageBegin("isGatewayExist", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteProject(self, seqid, iprot, oprot):
-        args = deleteProject_args()
+    def process_createNotification(self, seqid, iprot, oprot):
+        args = createNotification_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteProject_result()
+        result = createNotification_result()
         try:
-            result.success = self._handler.deleteProject(args.authzToken, args.projectId)
+            result.success = self._handler.createNotification(args.authzToken, args.notification)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13516,9 +13866,6 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AiravataSystemException as ase:
             msg_type = TMessageType.REPLY
             result.ase = ase
-        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
-            msg_type = TMessageType.REPLY
-            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -13526,18 +13873,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("deleteProject", msg_type, seqid)
+        oprot.writeMessageBegin("createNotification", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getUserProjects(self, seqid, iprot, oprot):
-        args = getUserProjects_args()
+    def process_updateNotification(self, seqid, iprot, oprot):
+        args = updateNotification_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getUserProjects_result()
+        result = updateNotification_result()
         try:
-            result.success = self._handler.getUserProjects(args.authzToken, args.gatewayId, args.userName, args.limit, args.offset)
+            result.success = self._handler.updateNotification(args.authzToken, args.notification)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13557,18 +13904,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getUserProjects", msg_type, seqid)
+        oprot.writeMessageBegin("updateNotification", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_searchProjects(self, seqid, iprot, oprot):
-        args = searchProjects_args()
+    def process_deleteNotification(self, seqid, iprot, oprot):
+        args = deleteNotification_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = searchProjects_result()
+        result = deleteNotification_result()
         try:
-            result.success = self._handler.searchProjects(args.authzToken, args.gatewayId, args.userName, args.filters, args.limit, args.offset)
+            result.success = self._handler.deleteNotification(args.authzToken, args.gatewayId, args.notificationId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13588,18 +13935,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("searchProjects", msg_type, seqid)
+        oprot.writeMessageBegin("deleteNotification", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_searchExperiments(self, seqid, iprot, oprot):
-        args = searchExperiments_args()
+    def process_getNotification(self, seqid, iprot, oprot):
+        args = getNotification_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = searchExperiments_result()
+        result = getNotification_result()
         try:
-            result.success = self._handler.searchExperiments(args.authzToken, args.gatewayId, args.userName, args.filters, args.limit, args.offset)
+            result.success = self._handler.getNotification(args.authzToken, args.gatewayId, args.notificationId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13619,18 +13966,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("searchExperiments", msg_type, seqid)
+        oprot.writeMessageBegin("getNotification", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getExperimentStatistics(self, seqid, iprot, oprot):
-        args = getExperimentStatistics_args()
+    def process_getAllNotifications(self, seqid, iprot, oprot):
+        args = getAllNotifications_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getExperimentStatistics_result()
+        result = getAllNotifications_result()
         try:
-            result.success = self._handler.getExperimentStatistics(args.authzToken, args.gatewayId, args.fromTime, args.toTime, args.userName, args.applicationName, args.resourceHostName)
+            result.success = self._handler.getAllNotifications(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13650,18 +13997,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getExperimentStatistics", msg_type, seqid)
+        oprot.writeMessageBegin("getAllNotifications", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getExperimentsInProject(self, seqid, iprot, oprot):
-        args = getExperimentsInProject_args()
+    def process_generateAndRegisterSSHKeys(self, seqid, iprot, oprot):
+        args = generateAndRegisterSSHKeys_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getExperimentsInProject_result()
+        result = generateAndRegisterSSHKeys_result()
         try:
-            result.success = self._handler.getExperimentsInProject(args.authzToken, args.projectId, args.limit, args.offset)
+            result.success = self._handler.generateAndRegisterSSHKeys(args.authzToken, args.gatewayId, args.userName, args.description, args.credentialOwnerType)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13674,28 +14021,50 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AiravataSystemException as ase:
             msg_type = TMessageType.REPLY
             result.ase = ase
-        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
+        except Exception as ex:
+            msg_type = TMessageType.EXCEPTION
+            logging.exception(ex)
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("generateAndRegisterSSHKeys", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_registerPwdCredential(self, seqid, iprot, oprot):
+        args = registerPwdCredential_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = registerPwdCredential_result()
+        try:
+            result.success = self._handler.registerPwdCredential(args.authzToken, args.gatewayId, args.portalUserName, args.loginUserName, args.password, args.description)
             msg_type = TMessageType.REPLY
-            result.pnfe = pnfe
-        except airavata.api.error.ttypes.AuthorizationException as ae:
+        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+            raise
+        except airavata.api.error.ttypes.InvalidRequestException as ire:
             msg_type = TMessageType.REPLY
-            result.ae = ae
+            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 Exception as ex:
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getExperimentsInProject", msg_type, seqid)
+        oprot.writeMessageBegin("registerPwdCredential", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getUserExperiments(self, seqid, iprot, oprot):
-        args = getUserExperiments_args()
+    def process_getSSHPubKey(self, seqid, iprot, oprot):
+        args = getSSHPubKey_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getUserExperiments_result()
+        result = getSSHPubKey_result()
         try:
-            result.success = self._handler.getUserExperiments(args.authzToken, args.gatewayId, args.userName, args.limit, args.offset)
+            result.success = self._handler.getSSHPubKey(args.authzToken, args.airavataCredStoreToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13708,25 +14077,22 @@ class Processor(Iface, TProcessor):
         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("getUserExperiments", msg_type, seqid)
+        oprot.writeMessageBegin("getSSHPubKey", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_createExperiment(self, seqid, iprot, oprot):
-        args = createExperiment_args()
+    def process_getAllGatewaySSHPubKeys(self, seqid, iprot, oprot):
+        args = getAllGatewaySSHPubKeys_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = createExperiment_result()
+        result = getAllGatewaySSHPubKeys_result()
         try:
-            result.success = self._handler.createExperiment(args.authzToken, args.gatewayId, args.experiment)
+            result.success = self._handler.getAllGatewaySSHPubKeys(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13739,25 +14105,22 @@ class Processor(Iface, TProcessor):
         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("createExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("getAllGatewaySSHPubKeys", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteExperiment(self, seqid, iprot, oprot):
-        args = deleteExperiment_args()
+    def process_getAllCredentialSummaryForGateway(self, seqid, iprot, oprot):
+        args = getAllCredentialSummaryForGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteExperiment_result()
+        result = getAllCredentialSummaryForGateway_result()
         try:
-            result.success = self._handler.deleteExperiment(args.authzToken, args.experimentId)
+            result.success = self._handler.getAllCredentialSummaryForGateway(args.authzToken, args.type, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -13770,136 +14133,140 @@ class Processor(Iface, TProcessor):
         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("deleteExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("getAllCredentialSummaryForGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getExperiment(self, seqid, iprot, oprot):
-        args = getExperiment_args()
+    def process_getAllCredentialSummaryForUsersInGateway(self, seqid, iprot, oprot):
+        args = getAllCredentialSummaryForUsersInGateway_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getExperiment_result()
+        result = getAllCredentialSummaryForUsersInGateway_result()
         try:
-            result.success = self._handler.getExperiment(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.getAllCredentialSummaryForUsersInGateway(args.authzToken, args.type, args.gatewayId, args.userId)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         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("getExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("getAllCredentialSummaryForUsersInGateway", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getExperimentByAdmin(self, seqid, iprot, oprot):
-        args = getExperimentByAdmin_args()
+    def process_getAllGatewayPWDCredentials(self, seqid, iprot, oprot):
+        args = getAllGatewayPWDCredentials_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getExperimentByAdmin_result()
+        result = getAllGatewayPWDCredentials_result()
         try:
-            result.success = self._handler.getExperimentByAdmin(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.getAllGatewayPWDCredentials(args.authzToken, args.gatewayId)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         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("getExperimentByAdmin", msg_type, seqid)
+        oprot.writeMessageBegin("getAllGatewayPWDCredentials", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getDetailedExperimentTree(self, seqid, iprot, oprot):
-        args = getDetailedExperimentTree_args()
+    def process_deleteSSHPubKey(self, seqid, iprot, oprot):
+        args = deleteSSHPubKey_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getDetailedExperimentTree_result()
+        result = deleteSSHPubKey_result()
         try:
-            result.success = self._handler.getDetailedExperimentTree(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.deleteSSHPubKey(args.authzToken, args.airavataCredStoreToken, args.gatewayId)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         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("getDetailedExperimentTree", msg_type, seqid)
+        oprot.writeMessageBegin("deleteSSHPubKey", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateExperiment(self, seqid, iprot, oprot):
-        args = updateExperiment_args()
+    def process_deletePWDCredential(self, seqid, iprot, oprot):
+        args = deletePWDCredential_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateExperiment_result()
+        result = deletePWDCredential_result()
         try:
-            self._handler.updateExperiment(args.authzToken, args.airavataExperimentId, args.experiment)
+            result.success = self._handler.deletePWDCredential(args.authzToken, args.airavataCredStoreToken, args.gatewayId)
             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.ExperimentNotFoundException as enf:
+        except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
-            result.enf = enf
+            result.ace = ace
+        except airavata.api.error.ttypes.AiravataSystemException as ase:
+            msg_type = TMessageType.REPLY
+            result.ase = ase
+        except Exception as ex:
+            msg_type = TMessageType.EXCEPTION
+            logging.exception(ex)
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("deletePWDCredential", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_createProject(self, seqid, iprot, oprot):
+        args = createProject_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = createProject_result()
+        try:
+            result.success = self._handler.createProject(args.authzToken, args.gatewayId, args.project)
+            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
@@ -13913,21 +14280,33 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("createProject", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateExperimentConfiguration(self, seqid, iprot, oprot):
-        args = updateExperimentConfiguration_args()
+    def process_updateProject(self, seqid, iprot, oprot):
+        args = updateProject_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateExperimentConfiguration_result()
+        result = updateProject_result()
         try:
-            self._handler.updateExperimentConfiguration(args.authzToken, args.airavataExperimentId, args.userConfiguration)
+            self._handler.updateProject(args.authzToken, args.projectId, args.updatedProject)
             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.ProjectNotFoundException as pnfe:
+            msg_type = TMessageType.REPLY
+            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -13935,21 +14314,33 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateExperimentConfiguration", msg_type, seqid)
+        oprot.writeMessageBegin("updateProject", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateResourceScheduleing(self, seqid, iprot, oprot):
-        args = updateResourceScheduleing_args()
+    def process_getProject(self, seqid, iprot, oprot):
+        args = getProject_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateResourceScheduleing_result()
+        result = getProject_result()
         try:
-            self._handler.updateResourceScheduleing(args.authzToken, args.airavataExperimentId, args.resourceScheduling)
+            result.success = self._handler.getProject(args.authzToken, args.projectId)
             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.ProjectNotFoundException as pnfe:
+            msg_type = TMessageType.REPLY
+            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -13957,33 +14348,33 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateResourceScheduleing", msg_type, seqid)
+        oprot.writeMessageBegin("getProject", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_validateExperiment(self, seqid, iprot, oprot):
-        args = validateExperiment_args()
+    def process_deleteProject(self, seqid, iprot, oprot):
+        args = deleteProject_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = validateExperiment_result()
+        result = deleteProject_result()
         try:
-            result.success = self._handler.validateExperiment(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.deleteProject(args.authzToken, args.projectId)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         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.ProjectNotFoundException as pnfe:
+            msg_type = TMessageType.REPLY
+            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -13991,27 +14382,24 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("validateExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("deleteProject", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_launchExperiment(self, seqid, iprot, oprot):
-        args = launchExperiment_args()
+    def process_getUserProjects(self, seqid, iprot, oprot):
+        args = getUserProjects_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = launchExperiment_result()
+        result = getUserProjects_result()
         try:
-            self._handler.launchExperiment(args.authzToken, args.airavataExperimentId, args.gatewayId)
+            result.success = self._handler.getUserProjects(args.authzToken, args.gatewayId, args.userName, args.limit, args.offset)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14025,27 +14413,24 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("launchExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("getUserProjects", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getExperimentStatus(self, seqid, iprot, oprot):
-        args = getExperimentStatus_args()
+    def process_searchProjects(self, seqid, iprot, oprot):
+        args = searchProjects_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getExperimentStatus_result()
+        result = searchProjects_result()
         try:
-            result.success = self._handler.getExperimentStatus(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.searchProjects(args.authzToken, args.gatewayId, args.userName, args.filters, args.limit, args.offset)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14059,27 +14444,24 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getExperimentStatus", msg_type, seqid)
+        oprot.writeMessageBegin("searchProjects", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getExperimentOutputs(self, seqid, iprot, oprot):
-        args = getExperimentOutputs_args()
+    def process_searchExperiments(self, seqid, iprot, oprot):
+        args = searchExperiments_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getExperimentOutputs_result()
+        result = searchExperiments_result()
         try:
-            result.success = self._handler.getExperimentOutputs(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.searchExperiments(args.authzToken, args.gatewayId, args.userName, args.filters, args.limit, args.offset)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14093,27 +14475,24 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getExperimentOutputs", msg_type, seqid)
+        oprot.writeMessageBegin("searchExperiments", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getIntermediateOutputs(self, seqid, iprot, oprot):
-        args = getIntermediateOutputs_args()
+    def process_getExperimentStatistics(self, seqid, iprot, oprot):
+        args = getExperimentStatistics_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getIntermediateOutputs_result()
+        result = getExperimentStatistics_result()
         try:
-            result.success = self._handler.getIntermediateOutputs(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.getExperimentStatistics(args.authzToken, args.gatewayId, args.fromTime, args.toTime, args.userName, args.applicationName, args.resourceHostName)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14127,33 +14506,33 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getIntermediateOutputs", msg_type, seqid)
+        oprot.writeMessageBegin("getExperimentStatistics", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getJobStatuses(self, seqid, iprot, oprot):
-        args = getJobStatuses_args()
+    def process_getExperimentsInProject(self, seqid, iprot, oprot):
+        args = getExperimentsInProject_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getJobStatuses_result()
+        result = getExperimentsInProject_result()
         try:
-            result.success = self._handler.getJobStatuses(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.getExperimentsInProject(args.authzToken, args.projectId, args.limit, args.offset)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         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.ProjectNotFoundException as pnfe:
+            msg_type = TMessageType.REPLY
+            result.pnfe = pnfe
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -14161,27 +14540,24 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getJobStatuses", msg_type, seqid)
+        oprot.writeMessageBegin("getExperimentsInProject", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getJobDetails(self, seqid, iprot, oprot):
-        args = getJobDetails_args()
+    def process_getUserExperiments(self, seqid, iprot, oprot):
+        args = getUserExperiments_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getJobDetails_result()
+        result = getUserExperiments_result()
         try:
-            result.success = self._handler.getJobDetails(args.authzToken, args.airavataExperimentId)
+            result.success = self._handler.getUserExperiments(args.authzToken, args.gatewayId, args.userName, args.limit, args.offset)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14195,27 +14571,24 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getJobDetails", msg_type, seqid)
+        oprot.writeMessageBegin("getUserExperiments", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_cloneExperiment(self, seqid, iprot, oprot):
-        args = cloneExperiment_args()
+    def process_createExperiment(self, seqid, iprot, oprot):
+        args = createExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = cloneExperiment_result()
+        result = createExperiment_result()
         try:
-            result.success = self._handler.cloneExperiment(args.authzToken, args.existingExperimentID, args.newExperimentName, args.newExperimentProjectId)
+            result.success = self._handler.createExperiment(args.authzToken, args.gatewayId, args.experiment)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14225,34 +14598,28 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
-        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
-            msg_type = TMessageType.REPLY
-            result.pnfe = pnfe
         except Exception as ex:
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("cloneExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("createExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_cloneExperimentByAdmin(self, seqid, iprot, oprot):
-        args = cloneExperimentByAdmin_args()
+    def process_deleteExperiment(self, seqid, iprot, oprot):
+        args = deleteExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = cloneExperimentByAdmin_result()
+        result = deleteExperiment_result()
         try:
-            result.success = self._handler.cloneExperimentByAdmin(args.authzToken, args.existingExperimentID, args.newExperimentName, args.newExperimentProjectId)
+            result.success = self._handler.deleteExperiment(args.authzToken, args.experimentId)
             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.ExperimentNotFoundException as enf:
-            msg_type = TMessageType.REPLY
-            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14262,25 +14629,22 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
-        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
-            msg_type = TMessageType.REPLY
-            result.pnfe = pnfe
         except Exception as ex:
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("cloneExperimentByAdmin", msg_type, seqid)
+        oprot.writeMessageBegin("deleteExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_terminateExperiment(self, seqid, iprot, oprot):
-        args = terminateExperiment_args()
+    def process_getExperiment(self, seqid, iprot, oprot):
+        args = getExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = terminateExperiment_result()
+        result = getExperiment_result()
         try:
-            self._handler.terminateExperiment(args.authzToken, args.airavataExperimentId, args.gatewayId)
+            result.success = self._handler.getExperiment(args.authzToken, args.airavataExperimentId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14303,24 +14667,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("terminateExperiment", msg_type, seqid)
+        oprot.writeMessageBegin("getExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_registerApplicationModule(self, seqid, iprot, oprot):
-        args = registerApplicationModule_args()
+    def process_getExperimentByAdmin(self, seqid, iprot, oprot):
+        args = getExperimentByAdmin_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = registerApplicationModule_result()
+        result = getExperimentByAdmin_result()
         try:
-            result.success = self._handler.registerApplicationModule(args.authzToken, args.gatewayId, args.applicationModule)
+            result.success = self._handler.getExperimentByAdmin(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14334,24 +14701,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("registerApplicationModule", msg_type, seqid)
+        oprot.writeMessageBegin("getExperimentByAdmin", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getApplicationModule(self, seqid, iprot, oprot):
-        args = getApplicationModule_args()
+    def process_getDetailedExperimentTree(self, seqid, iprot, oprot):
+        args = getDetailedExperimentTree_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getApplicationModule_result()
+        result = getDetailedExperimentTree_result()
         try:
-            result.success = self._handler.getApplicationModule(args.authzToken, args.appModuleId)
+            result.success = self._handler.getDetailedExperimentTree(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14365,24 +14735,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getApplicationModule", msg_type, seqid)
+        oprot.writeMessageBegin("getDetailedExperimentTree", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateApplicationModule(self, seqid, iprot, oprot):
-        args = updateApplicationModule_args()
+    def process_updateExperiment(self, seqid, iprot, oprot):
+        args = updateExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateApplicationModule_result()
+        result = updateExperiment_result()
         try:
-            result.success = self._handler.updateApplicationModule(args.authzToken, args.appModuleId, args.applicationModule)
+            self._handler.updateExperiment(args.authzToken, args.airavataExperimentId, args.experiment)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14396,30 +14769,43 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateApplicationModule", msg_type, seqid)
+        oprot.writeMessageBegin("updateExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllAppModules(self, seqid, iprot, oprot):
-        args = getAllAppModules_args()
+    def process_updateExperimentConfiguration(self, seqid, iprot, oprot):
+        args = updateExperimentConfiguration_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllAppModules_result()
+        result = updateExperimentConfiguration_result()
         try:
-            result.success = self._handler.getAllAppModules(args.authzToken, args.gatewayId)
+            self._handler.updateExperimentConfiguration(args.authzToken, args.airavataExperimentId, args.userConfiguration)
             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:
+        except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
-            result.ace = ace
-        except airavata.api.error.ttypes.AiravataSystemException as ase:
+            result.ae = ae
+        except Exception as ex:
+            msg_type = TMessageType.EXCEPTION
+            logging.exception(ex)
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("updateExperimentConfiguration", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateResourceScheduleing(self, seqid, iprot, oprot):
+        args = updateResourceScheduleing_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateResourceScheduleing_result()
+        try:
+            self._handler.updateResourceScheduleing(args.authzToken, args.airavataExperimentId, args.resourceScheduling)
             msg_type = TMessageType.REPLY
-            result.ase = ase
+        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+            raise
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
@@ -14427,24 +14813,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllAppModules", msg_type, seqid)
+        oprot.writeMessageBegin("updateResourceScheduleing", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteApplicationModule(self, seqid, iprot, oprot):
-        args = deleteApplicationModule_args()
+    def process_validateExperiment(self, seqid, iprot, oprot):
+        args = validateExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteApplicationModule_result()
+        result = validateExperiment_result()
         try:
-            result.success = self._handler.deleteApplicationModule(args.authzToken, args.appModuleId)
+            result.success = self._handler.validateExperiment(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14458,24 +14847,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("deleteApplicationModule", msg_type, seqid)
+        oprot.writeMessageBegin("validateExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_registerApplicationDeployment(self, seqid, iprot, oprot):
-        args = registerApplicationDeployment_args()
+    def process_launchExperiment(self, seqid, iprot, oprot):
+        args = launchExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = registerApplicationDeployment_result()
+        result = launchExperiment_result()
         try:
-            result.success = self._handler.registerApplicationDeployment(args.authzToken, args.gatewayId, args.applicationDeployment)
+            self._handler.launchExperiment(args.authzToken, args.airavataExperimentId, args.gatewayId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14489,24 +14881,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("registerApplicationDeployment", msg_type, seqid)
+        oprot.writeMessageBegin("launchExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getApplicationDeployment(self, seqid, iprot, oprot):
-        args = getApplicationDeployment_args()
+    def process_getExperimentStatus(self, seqid, iprot, oprot):
+        args = getExperimentStatus_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getApplicationDeployment_result()
+        result = getExperimentStatus_result()
         try:
-            result.success = self._handler.getApplicationDeployment(args.authzToken, args.appDeploymentId)
+            result.success = self._handler.getExperimentStatus(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14520,24 +14915,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getApplicationDeployment", msg_type, seqid)
+        oprot.writeMessageBegin("getExperimentStatus", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateApplicationDeployment(self, seqid, iprot, oprot):
-        args = updateApplicationDeployment_args()
+    def process_getExperimentOutputs(self, seqid, iprot, oprot):
+        args = getExperimentOutputs_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateApplicationDeployment_result()
+        result = getExperimentOutputs_result()
         try:
-            result.success = self._handler.updateApplicationDeployment(args.authzToken, args.appDeploymentId, args.applicationDeployment)
+            result.success = self._handler.getExperimentOutputs(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14551,24 +14949,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateApplicationDeployment", msg_type, seqid)
+        oprot.writeMessageBegin("getExperimentOutputs", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteApplicationDeployment(self, seqid, iprot, oprot):
-        args = deleteApplicationDeployment_args()
+    def process_getIntermediateOutputs(self, seqid, iprot, oprot):
+        args = getIntermediateOutputs_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteApplicationDeployment_result()
+        result = getIntermediateOutputs_result()
         try:
-            result.success = self._handler.deleteApplicationDeployment(args.authzToken, args.appDeploymentId)
+            result.success = self._handler.getIntermediateOutputs(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14582,24 +14983,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("deleteApplicationDeployment", msg_type, seqid)
+        oprot.writeMessageBegin("getIntermediateOutputs", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllApplicationDeployments(self, seqid, iprot, oprot):
-        args = getAllApplicationDeployments_args()
+    def process_getJobStatuses(self, seqid, iprot, oprot):
+        args = getJobStatuses_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllApplicationDeployments_result()
+        result = getJobStatuses_result()
         try:
-            result.success = self._handler.getAllApplicationDeployments(args.authzToken, args.gatewayId)
+            result.success = self._handler.getJobStatuses(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14613,24 +15017,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllApplicationDeployments", msg_type, seqid)
+        oprot.writeMessageBegin("getJobStatuses", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAppModuleDeployedResources(self, seqid, iprot, oprot):
-        args = getAppModuleDeployedResources_args()
+    def process_getJobDetails(self, seqid, iprot, oprot):
+        args = getJobDetails_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAppModuleDeployedResources_result()
+        result = getJobDetails_result()
         try:
-            result.success = self._handler.getAppModuleDeployedResources(args.authzToken, args.appModuleId)
+            result.success = self._handler.getJobDetails(args.authzToken, args.airavataExperimentId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14644,24 +15051,27 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAppModuleDeployedResources", msg_type, seqid)
+        oprot.writeMessageBegin("getJobDetails", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_registerApplicationInterface(self, seqid, iprot, oprot):
-        args = registerApplicationInterface_args()
+    def process_cloneExperiment(self, seqid, iprot, oprot):
+        args = cloneExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = registerApplicationInterface_result()
+        result = cloneExperiment_result()
         try:
-            result.success = self._handler.registerApplicationInterface(args.authzToken, args.gatewayId, args.applicationInterface)
+            result.success = self._handler.cloneExperiment(args.authzToken, args.existingExperimentID, args.newExperimentName, args.newExperimentProjectId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14671,28 +15081,34 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
+        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
+            msg_type = TMessageType.REPLY
+            result.pnfe = pnfe
         except Exception as ex:
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("registerApplicationInterface", msg_type, seqid)
+        oprot.writeMessageBegin("cloneExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_cloneApplicationInterface(self, seqid, iprot, oprot):
-        args = cloneApplicationInterface_args()
+    def process_cloneExperimentByAdmin(self, seqid, iprot, oprot):
+        args = cloneExperimentByAdmin_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = cloneApplicationInterface_result()
+        result = cloneExperimentByAdmin_result()
         try:
-            result.success = self._handler.cloneApplicationInterface(args.authzToken, args.existingAppInterfaceID, args.newApplicationName, args.gatewayId)
+            result.success = self._handler.cloneExperimentByAdmin(args.authzToken, args.existingExperimentID, args.newExperimentName, args.newExperimentProjectId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14702,28 +15118,34 @@ class Processor(Iface, TProcessor):
         except airavata.api.error.ttypes.AuthorizationException as ae:
             msg_type = TMessageType.REPLY
             result.ae = ae
+        except airavata.api.error.ttypes.ProjectNotFoundException as pnfe:
+            msg_type = TMessageType.REPLY
+            result.pnfe = pnfe
         except Exception as ex:
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("cloneApplicationInterface", msg_type, seqid)
+        oprot.writeMessageBegin("cloneExperimentByAdmin", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getApplicationInterface(self, seqid, iprot, oprot):
-        args = getApplicationInterface_args()
+    def process_terminateExperiment(self, seqid, iprot, oprot):
+        args = terminateExperiment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getApplicationInterface_result()
+        result = terminateExperiment_result()
         try:
-            result.success = self._handler.getApplicationInterface(args.authzToken, args.appInterfaceId)
+            self._handler.terminateExperiment(args.authzToken, args.airavataExperimentId, args.gatewayId)
             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.ExperimentNotFoundException as enf:
+            msg_type = TMessageType.REPLY
+            result.enf = enf
         except airavata.api.error.ttypes.AiravataClientException as ace:
             msg_type = TMessageType.REPLY
             result.ace = ace
@@ -14737,18 +15159,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getApplicationInterface", msg_type, seqid)
+        oprot.writeMessageBegin("terminateExperiment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateApplicationInterface(self, seqid, iprot, oprot):
-        args = updateApplicationInterface_args()
+    def process_registerApplicationModule(self, seqid, iprot, oprot):
+        args = registerApplicationModule_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateApplicationInterface_result()
+        result = registerApplicationModule_result()
         try:
-            result.success = self._handler.updateApplicationInterface(args.authzToken, args.appInterfaceId, args.applicationInterface)
+            result.success = self._handler.registerApplicationModule(args.authzToken, args.gatewayId, args.applicationModule)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14768,18 +15190,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateApplicationInterface", msg_type, seqid)
+        oprot.writeMessageBegin("registerApplicationModule", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteApplicationInterface(self, seqid, iprot, oprot):
-        args = deleteApplicationInterface_args()
+    def process_getApplicationModule(self, seqid, iprot, oprot):
+        args = getApplicationModule_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteApplicationInterface_result()
+        result = getApplicationModule_result()
         try:
-            result.success = self._handler.deleteApplicationInterface(args.authzToken, args.appInterfaceId)
+            result.success = self._handler.getApplicationModule(args.authzToken, args.appModuleId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14799,18 +15221,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("deleteApplicationInterface", msg_type, seqid)
+        oprot.writeMessageBegin("getApplicationModule", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllApplicationInterfaceNames(self, seqid, iprot, oprot):
-        args = getAllApplicationInterfaceNames_args()
+    def process_updateApplicationModule(self, seqid, iprot, oprot):
+        args = updateApplicationModule_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllApplicationInterfaceNames_result()
+        result = updateApplicationModule_result()
         try:
-            result.success = self._handler.getAllApplicationInterfaceNames(args.authzToken, args.gatewayId)
+            result.success = self._handler.updateApplicationModule(args.authzToken, args.appModuleId, args.applicationModule)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14830,18 +15252,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllApplicationInterfaceNames", msg_type, seqid)
+        oprot.writeMessageBegin("updateApplicationModule", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllApplicationInterfaces(self, seqid, iprot, oprot):
-        args = getAllApplicationInterfaces_args()
+    def process_getAllAppModules(self, seqid, iprot, oprot):
+        args = getAllAppModules_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllApplicationInterfaces_result()
+        result = getAllAppModules_result()
         try:
-            result.success = self._handler.getAllApplicationInterfaces(args.authzToken, args.gatewayId)
+            result.success = self._handler.getAllAppModules(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14861,18 +15283,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllApplicationInterfaces", msg_type, seqid)
+        oprot.writeMessageBegin("getAllAppModules", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getApplicationInputs(self, seqid, iprot, oprot):
-        args = getApplicationInputs_args()
+    def process_getAccessibleAppModules(self, seqid, iprot, oprot):
+        args = getAccessibleAppModules_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getApplicationInputs_result()
+        result = getAccessibleAppModules_result()
         try:
-            result.success = self._handler.getApplicationInputs(args.authzToken, args.appInterfaceId)
+            result.success = self._handler.getAccessibleAppModules(args.authzToken, args.gatewayId, args.permissionType)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14892,18 +15314,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getApplicationInputs", msg_type, seqid)
+        oprot.writeMessageBegin("getAccessibleAppModules", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getApplicationOutputs(self, seqid, iprot, oprot):
-        args = getApplicationOutputs_args()
+    def process_deleteApplicationModule(self, seqid, iprot, oprot):
+        args = deleteApplicationModule_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getApplicationOutputs_result()
+        result = deleteApplicationModule_result()
         try:
-            result.success = self._handler.getApplicationOutputs(args.authzToken, args.appInterfaceId)
+            result.success = self._handler.deleteApplicationModule(args.authzToken, args.appModuleId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14923,18 +15345,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getApplicationOutputs", msg_type, seqid)
+        oprot.writeMessageBegin("deleteApplicationModule", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAvailableAppInterfaceComputeResources(self, seqid, iprot, oprot):
-        args = getAvailableAppInterfaceComputeResources_args()
+    def process_registerApplicationDeployment(self, seqid, iprot, oprot):
+        args = registerApplicationDeployment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAvailableAppInterfaceComputeResources_result()
+        result = registerApplicationDeployment_result()
         try:
-            result.success = self._handler.getAvailableAppInterfaceComputeResources(args.authzToken, args.appInterfaceId)
+            result.success = self._handler.registerApplicationDeployment(args.authzToken, args.gatewayId, args.applicationDeployment)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14954,18 +15376,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAvailableAppInterfaceComputeResources", msg_type, seqid)
+        oprot.writeMessageBegin("registerApplicationDeployment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_registerComputeResource(self, seqid, iprot, oprot):
-        args = registerComputeResource_args()
+    def process_getApplicationDeployment(self, seqid, iprot, oprot):
+        args = getApplicationDeployment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = registerComputeResource_result()
+        result = getApplicationDeployment_result()
         try:
-            result.success = self._handler.registerComputeResource(args.authzToken, args.computeResourceDescription)
+            result.success = self._handler.getApplicationDeployment(args.authzToken, args.appDeploymentId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -14985,18 +15407,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("registerComputeResource", msg_type, seqid)
+        oprot.writeMessageBegin("getApplicationDeployment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getComputeResource(self, seqid, iprot, oprot):
-        args = getComputeResource_args()
+    def process_updateApplicationDeployment(self, seqid, iprot, oprot):
+        args = updateApplicationDeployment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getComputeResource_result()
+        result = updateApplicationDeployment_result()
         try:
-            result.success = self._handler.getComputeResource(args.authzToken, args.computeResourceId)
+            result.success = self._handler.updateApplicationDeployment(args.authzToken, args.appDeploymentId, args.applicationDeployment)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15016,18 +15438,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getComputeResource", msg_type, seqid)
+        oprot.writeMessageBegin("updateApplicationDeployment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllComputeResourceNames(self, seqid, iprot, oprot):
-        args = getAllComputeResourceNames_args()
+    def process_deleteApplicationDeployment(self, seqid, iprot, oprot):
+        args = deleteApplicationDeployment_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllComputeResourceNames_result()
+        result = deleteApplicationDeployment_result()
         try:
-            result.success = self._handler.getAllComputeResourceNames(args.authzToken)
+            result.success = self._handler.deleteApplicationDeployment(args.authzToken, args.appDeploymentId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15047,18 +15469,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllComputeResourceNames", msg_type, seqid)
+        oprot.writeMessageBegin("deleteApplicationDeployment", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateComputeResource(self, seqid, iprot, oprot):
-        args = updateComputeResource_args()
+    def process_getAllApplicationDeployments(self, seqid, iprot, oprot):
+        args = getAllApplicationDeployments_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateComputeResource_result()
+        result = getAllApplicationDeployments_result()
         try:
-            result.success = self._handler.updateComputeResource(args.authzToken, args.computeResourceId, args.computeResourceDescription)
+            result.success = self._handler.getAllApplicationDeployments(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15078,18 +15500,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateComputeResource", msg_type, seqid)
+        oprot.writeMessageBegin("getAllApplicationDeployments", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteComputeResource(self, seqid, iprot, oprot):
-        args = deleteComputeResource_args()
+    def process_getAccessibleApplicationDeployments(self, seqid, iprot, oprot):
+        args = getAccessibleApplicationDeployments_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteComputeResource_result()
+        result = getAccessibleApplicationDeployments_result()
         try:
-            result.success = self._handler.deleteComputeResource(args.authzToken, args.computeResourceId)
+            result.success = self._handler.getAccessibleApplicationDeployments(args.authzToken, args.gatewayId, args.permissionType)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15109,18 +15531,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("deleteComputeResource", msg_type, seqid)
+        oprot.writeMessageBegin("getAccessibleApplicationDeployments", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_registerStorageResource(self, seqid, iprot, oprot):
-        args = registerStorageResource_args()
+    def process_getAppModuleDeployedResources(self, seqid, iprot, oprot):
+        args = getAppModuleDeployedResources_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = registerStorageResource_result()
+        result = getAppModuleDeployedResources_result()
         try:
-            result.success = self._handler.registerStorageResource(args.authzToken, args.storageResourceDescription)
+            result.success = self._handler.getAppModuleDeployedResources(args.authzToken, args.appModuleId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15140,18 +15562,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("registerStorageResource", msg_type, seqid)
+        oprot.writeMessageBegin("getAppModuleDeployedResources", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getStorageResource(self, seqid, iprot, oprot):
-        args = getStorageResource_args()
+    def process_registerApplicationInterface(self, seqid, iprot, oprot):
+        args = registerApplicationInterface_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getStorageResource_result()
+        result = registerApplicationInterface_result()
         try:
-            result.success = self._handler.getStorageResource(args.authzToken, args.storageResourceId)
+            result.success = self._handler.registerApplicationInterface(args.authzToken, args.gatewayId, args.applicationInterface)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15171,18 +15593,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getStorageResource", msg_type, seqid)
+        oprot.writeMessageBegin("registerApplicationInterface", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getAllStorageResourceNames(self, seqid, iprot, oprot):
-        args = getAllStorageResourceNames_args()
+    def process_cloneApplicationInterface(self, seqid, iprot, oprot):
+        args = cloneApplicationInterface_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getAllStorageResourceNames_result()
+        result = cloneApplicationInterface_result()
         try:
-            result.success = self._handler.getAllStorageResourceNames(args.authzToken)
+            result.success = self._handler.cloneApplicationInterface(args.authzToken, args.existingAppInterfaceID, args.newApplicationName, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15202,18 +15624,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getAllStorageResourceNames", msg_type, seqid)
+        oprot.writeMessageBegin("cloneApplicationInterface", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateStorageResource(self, seqid, iprot, oprot):
-        args = updateStorageResource_args()
+    def process_getApplicationInterface(self, seqid, iprot, oprot):
+        args = getApplicationInterface_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateStorageResource_result()
+        result = getApplicationInterface_result()
         try:
-            result.success = self._handler.updateStorageResource(args.authzToken, args.storageResourceId, args.storageResourceDescription)
+            result.success = self._handler.getApplicationInterface(args.authzToken, args.appInterfaceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15233,18 +15655,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateStorageResource", msg_type, seqid)
+        oprot.writeMessageBegin("getApplicationInterface", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_deleteStorageResource(self, seqid, iprot, oprot):
-        args = deleteStorageResource_args()
+    def process_updateApplicationInterface(self, seqid, iprot, oprot):
+        args = updateApplicationInterface_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = deleteStorageResource_result()
+        result = updateApplicationInterface_result()
         try:
-            result.success = self._handler.deleteStorageResource(args.authzToken, args.storageResourceId)
+            result.success = self._handler.updateApplicationInterface(args.authzToken, args.appInterfaceId, args.applicationInterface)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15264,18 +15686,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("deleteStorageResource", msg_type, seqid)
+        oprot.writeMessageBegin("updateApplicationInterface", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_addLocalSubmissionDetails(self, seqid, iprot, oprot):
-        args = addLocalSubmissionDetails_args()
+    def process_deleteApplicationInterface(self, seqid, iprot, oprot):
+        args = deleteApplicationInterface_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = addLocalSubmissionDetails_result()
+        result = deleteApplicationInterface_result()
         try:
-            result.success = self._handler.addLocalSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.localSubmission)
+            result.success = self._handler.deleteApplicationInterface(args.authzToken, args.appInterfaceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15295,18 +15717,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("addLocalSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("deleteApplicationInterface", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateLocalSubmissionDetails(self, seqid, iprot, oprot):
-        args = updateLocalSubmissionDetails_args()
+    def process_getAllApplicationInterfaceNames(self, seqid, iprot, oprot):
+        args = getAllApplicationInterfaceNames_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateLocalSubmissionDetails_result()
+        result = getAllApplicationInterfaceNames_result()
         try:
-            result.success = self._handler.updateLocalSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.localSubmission)
+            result.success = self._handler.getAllApplicationInterfaceNames(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15326,18 +15748,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateLocalSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("getAllApplicationInterfaceNames", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getLocalJobSubmission(self, seqid, iprot, oprot):
-        args = getLocalJobSubmission_args()
+    def process_getAllApplicationInterfaces(self, seqid, iprot, oprot):
+        args = getAllApplicationInterfaces_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getLocalJobSubmission_result()
+        result = getAllApplicationInterfaces_result()
         try:
-            result.success = self._handler.getLocalJobSubmission(args.authzToken, args.jobSubmissionId)
+            result.success = self._handler.getAllApplicationInterfaces(args.authzToken, args.gatewayId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15357,18 +15779,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getLocalJobSubmission", msg_type, seqid)
+        oprot.writeMessageBegin("getAllApplicationInterfaces", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_addSSHJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = addSSHJobSubmissionDetails_args()
+    def process_getApplicationInputs(self, seqid, iprot, oprot):
+        args = getApplicationInputs_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = addSSHJobSubmissionDetails_result()
+        result = getApplicationInputs_result()
         try:
-            result.success = self._handler.addSSHJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.sshJobSubmission)
+            result.success = self._handler.getApplicationInputs(args.authzToken, args.appInterfaceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15388,18 +15810,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("addSSHJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("getApplicationInputs", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_addSSHForkJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = addSSHForkJobSubmissionDetails_args()
+    def process_getApplicationOutputs(self, seqid, iprot, oprot):
+        args = getApplicationOutputs_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = addSSHForkJobSubmissionDetails_result()
+        result = getApplicationOutputs_result()
         try:
-            result.success = self._handler.addSSHForkJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.sshJobSubmission)
+            result.success = self._handler.getApplicationOutputs(args.authzToken, args.appInterfaceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15419,18 +15841,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("addSSHForkJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("getApplicationOutputs", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getSSHJobSubmission(self, seqid, iprot, oprot):
-        args = getSSHJobSubmission_args()
+    def process_getAvailableAppInterfaceComputeResources(self, seqid, iprot, oprot):
+        args = getAvailableAppInterfaceComputeResources_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getSSHJobSubmission_result()
+        result = getAvailableAppInterfaceComputeResources_result()
         try:
-            result.success = self._handler.getSSHJobSubmission(args.authzToken, args.jobSubmissionId)
+            result.success = self._handler.getAvailableAppInterfaceComputeResources(args.authzToken, args.appInterfaceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15450,18 +15872,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getSSHJobSubmission", msg_type, seqid)
+        oprot.writeMessageBegin("getAvailableAppInterfaceComputeResources", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_addUNICOREJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = addUNICOREJobSubmissionDetails_args()
+    def process_registerComputeResource(self, seqid, iprot, oprot):
+        args = registerComputeResource_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = addUNICOREJobSubmissionDetails_result()
+        result = registerComputeResource_result()
         try:
-            result.success = self._handler.addUNICOREJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.unicoreJobSubmission)
+            result.success = self._handler.registerComputeResource(args.authzToken, args.computeResourceDescription)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15481,18 +15903,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("addUNICOREJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("registerComputeResource", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getUnicoreJobSubmission(self, seqid, iprot, oprot):
-        args = getUnicoreJobSubmission_args()
+    def process_getComputeResource(self, seqid, iprot, oprot):
+        args = getComputeResource_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getUnicoreJobSubmission_result()
+        result = getComputeResource_result()
         try:
-            result.success = self._handler.getUnicoreJobSubmission(args.authzToken, args.jobSubmissionId)
+            result.success = self._handler.getComputeResource(args.authzToken, args.computeResourceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15512,18 +15934,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getUnicoreJobSubmission", msg_type, seqid)
+        oprot.writeMessageBegin("getComputeResource", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_addCloudJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = addCloudJobSubmissionDetails_args()
+    def process_getAllComputeResourceNames(self, seqid, iprot, oprot):
+        args = getAllComputeResourceNames_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = addCloudJobSubmissionDetails_result()
+        result = getAllComputeResourceNames_result()
         try:
-            result.success = self._handler.addCloudJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.cloudSubmission)
+            result.success = self._handler.getAllComputeResourceNames(args.authzToken)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15543,18 +15965,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("addCloudJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("getAllComputeResourceNames", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_getCloudJobSubmission(self, seqid, iprot, oprot):
-        args = getCloudJobSubmission_args()
+    def process_updateComputeResource(self, seqid, iprot, oprot):
+        args = updateComputeResource_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = getCloudJobSubmission_result()
+        result = updateComputeResource_result()
         try:
-            result.success = self._handler.getCloudJobSubmission(args.authzToken, args.jobSubmissionId)
+            result.success = self._handler.updateComputeResource(args.authzToken, args.computeResourceId, args.computeResourceDescription)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15574,18 +15996,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("getCloudJobSubmission", msg_type, seqid)
+        oprot.writeMessageBegin("updateComputeResource", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateSSHJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = updateSSHJobSubmissionDetails_args()
+    def process_deleteComputeResource(self, seqid, iprot, oprot):
+        args = deleteComputeResource_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateSSHJobSubmissionDetails_result()
+        result = deleteComputeResource_result()
         try:
-            result.success = self._handler.updateSSHJobSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.sshJobSubmission)
+            result.success = self._handler.deleteComputeResource(args.authzToken, args.computeResourceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15605,18 +16027,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateSSHJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("deleteComputeResource", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateCloudJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = updateCloudJobSubmissionDetails_args()
+    def process_registerStorageResource(self, seqid, iprot, oprot):
+        args = registerStorageResource_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateCloudJobSubmissionDetails_result()
+        result = registerStorageResource_result()
         try:
-            result.success = self._handler.updateCloudJobSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.sshJobSubmission)
+            result.success = self._handler.registerStorageResource(args.authzToken, args.storageResourceDescription)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15636,18 +16058,18 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateCloudJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("registerStorageResource", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_updateUnicoreJobSubmissionDetails(self, seqid, iprot, oprot):
-        args = updateUnicoreJobSubmissionDetails_args()
+    def process_getStorageResource(self, seqid, iprot, oprot):
+        args = getStorageResource_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = updateUnicoreJobSubmissionDetails_result()
+        result = getStorageResource_result()
         try:
-            result.success = self._handler.updateUnicoreJobSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.unicoreJobSubmission)
+            result.success = self._handler.getStorageResource(args.authzToken, args.storageResourceId)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -15667,18 +16089,514 @@ class Processor(Iface, TProcessor):
             msg_type = TMessageType.EXCEPTION
             logging.exception(ex)
             result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
-        oprot.writeMessageBegin("updateUnicoreJobSubmissionDetails", msg_type, seqid)
+        oprot.writeMessageBegin("getStorageResource", msg_type, seqid)
         result.write(oprot)
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_addLocalDataMovementDetails(self, seqid, iprot, oprot):
-        args = addLocalDataMovementDetails_args()
+    def process_getAllStorageResourceNames(self, seqid, iprot, oprot):
+        args = getAllStorageResourceNames_args()
         args.read(iprot)
         iprot.readMessageEnd()
-        result = addLocalDataMovementDetails_result()
+        result = getAllStorageResourceNames_result()
         try:
-            result.success = self._handler.addLocalDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.localDataMovement)
+            result.success = self._handler.getAllStorageResourceNames(args.authzToken)
+            msg_type = TMessageType.REPLY
+        except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
+            raise
+        except airavata.api.error.ttypes.InvalidRequestException as ire:
+            msg_type = TMessageType.REPLY
+            result.ire = ire
+        except airavata.api.error.ttypes.AiravataClientException as ace:
+            msg_type = TMessageType.REPLY
+            result.ace = ace
+        except airavata.api.error.ttypes.AiravataSystemException as ase:
+            msg_type = TMessageType.REPLY
+            result.ase = ase
+        except airavata.api.error.ttypes.AuthorizationException as ae:
+            msg_type = TMessageType.REPLY
+            result.ae = ae
+        except Exception as ex:
+            msg_type = TMessageType.EXCEPTION
+            logging.exception(ex)
+            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
+        oprot.writeMessageBegin("getAllStorageResourceNames", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateStorageResource(self, seqid, iprot, oprot):
+        args = updateStorageResource_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateStorageResource_result()
+        try:
+            result.success = self._handler.updateStorageResource(args.authzToken, args.storageResourceId, args.storageResourceDescription)
+            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("updateStorageResource", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_deleteStorageResource(self, seqid, iprot, oprot):
+        args = deleteStorageResource_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = deleteStorageResource_result()
+        try:
+            result.success = self._handler.deleteStorageResource(args.authzToken, args.storageResourceId)
+            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("deleteStorageResource", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_addLocalSubmissionDetails(self, seqid, iprot, oprot):
+        args = addLocalSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = addLocalSubmissionDetails_result()
+        try:
+            result.success = self._handler.addLocalSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.localSubmission)
+            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("addLocalSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateLocalSubmissionDetails(self, seqid, iprot, oprot):
+        args = updateLocalSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateLocalSubmissionDetails_result()
+        try:
+            result.success = self._handler.updateLocalSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.localSubmission)
+            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("updateLocalSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getLocalJobSubmission(self, seqid, iprot, oprot):
+        args = getLocalJobSubmission_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getLocalJobSubmission_result()
+        try:
+            result.success = self._handler.getLocalJobSubmission(args.authzToken, args.jobSubmissionId)
+            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("getLocalJobSubmission", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_addSSHJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = addSSHJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = addSSHJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.addSSHJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.sshJobSubmission)
+            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("addSSHJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_addSSHForkJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = addSSHForkJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = addSSHForkJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.addSSHForkJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.sshJobSubmission)
+            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("addSSHForkJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getSSHJobSubmission(self, seqid, iprot, oprot):
+        args = getSSHJobSubmission_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getSSHJobSubmission_result()
+        try:
+            result.success = self._handler.getSSHJobSubmission(args.authzToken, args.jobSubmissionId)
+            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("getSSHJobSubmission", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_addUNICOREJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = addUNICOREJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = addUNICOREJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.addUNICOREJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.unicoreJobSubmission)
+            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("addUNICOREJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getUnicoreJobSubmission(self, seqid, iprot, oprot):
+        args = getUnicoreJobSubmission_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getUnicoreJobSubmission_result()
+        try:
+            result.success = self._handler.getUnicoreJobSubmission(args.authzToken, args.jobSubmissionId)
+            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("getUnicoreJobSubmission", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_addCloudJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = addCloudJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = addCloudJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.addCloudJobSubmissionDetails(args.authzToken, args.computeResourceId, args.priorityOrder, args.cloudSubmission)
+            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("addCloudJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getCloudJobSubmission(self, seqid, iprot, oprot):
+        args = getCloudJobSubmission_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getCloudJobSubmission_result()
+        try:
+            result.success = self._handler.getCloudJobSubmission(args.authzToken, args.jobSubmissionId)
+            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("getCloudJobSubmission", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateSSHJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = updateSSHJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateSSHJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.updateSSHJobSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.sshJobSubmission)
+            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("updateSSHJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateCloudJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = updateCloudJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateCloudJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.updateCloudJobSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.sshJobSubmission)
+            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("updateCloudJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateUnicoreJobSubmissionDetails(self, seqid, iprot, oprot):
+        args = updateUnicoreJobSubmissionDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateUnicoreJobSubmissionDetails_result()
+        try:
+            result.success = self._handler.updateUnicoreJobSubmissionDetails(args.authzToken, args.jobSubmissionInterfaceId, args.unicoreJobSubmission)
+            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("updateUnicoreJobSubmissionDetails", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_addLocalDataMovementDetails(self, seqid, iprot, oprot):
+        args = addLocalDataMovementDetails_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = addLocalDataMovementDetails_result()
+        try:
+            result.success = self._handler.addLocalDataMovementDetails(args.authzToken, args.productUri, args.dataMoveType, args.priorityOrder, args.localDataMovement)
             msg_type = TMessageType.REPLY
         except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
             raise
@@ -17811,115 +18729,3047 @@ class Processor(Iface, TProcessor):
         oprot.writeMessageEnd()
         oprot.trans.flush()
 
-    def process_shareResourceWithUsers(self, seqid, iprot, oprot):
-        args = shareResourceWithUsers_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = shareResourceWithUsers_result()
-        try:
-            result.success = self._handler.shareResourceWithUsers(args.authzToken, args.resourceId, args.resourceType, args.userPermissionList)
-            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("shareResourceWithUsers", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def process_shareResourceWithUsers(self, seqid, iprot, oprot):
+        args = shareResourceWithUsers_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = shareResourceWithUsers_result()
+        try:
+            result.success = self._handler.shareResourceWithUsers(args.authzToken, args.resourceId, args.resourceType, args.userPermissionList)
+            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("shareResourceWithUsers", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_revokeSharingOfResourceFromUsers(self, seqid, iprot, oprot):
+        args = revokeSharingOfResourceFromUsers_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = revokeSharingOfResourceFromUsers_result()
+        try:
+            result.success = self._handler.revokeSharingOfResourceFromUsers(args.authzToken, args.resourceId, args.resourceType, args.userPermissionList)
+            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("revokeSharingOfResourceFromUsers", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getAllAccessibleUsers(self, seqid, iprot, oprot):
+        args = getAllAccessibleUsers_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getAllAccessibleUsers_result()
+        try:
+            result.success = self._handler.getAllAccessibleUsers(args.authzToken, args.resourceId, args.resourceType, args.permissionType)
+            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("getAllAccessibleUsers", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_createGroupResourceProfile(self, seqid, iprot, oprot):
+        args = createGroupResourceProfile_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = createGroupResourceProfile_result()
+        try:
+            self._handler.createGroupResourceProfile(args.authzToken, args.groupResourceProfile)
+            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("createGroupResourceProfile", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_updateGroupResourceProfile(self, seqid, iprot, oprot):
+        args = updateGroupResourceProfile_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = updateGroupResourceProfile_result()
+        try:
+            self._handler.updateGroupResourceProfile(args.authzToken, args.groupResourceProfile)
+            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("updateGroupResourceProfile", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupResourceProfile(self, seqid, iprot, oprot):
+        args = getGroupResourceProfile_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupResourceProfile_result()
+        try:
+            result.success = self._handler.getGroupResourceProfile(args.authzToken, args.groupResourceProfileId)
+            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("getGroupResourceProfile", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_removeGroupResourceProfile(self, seqid, iprot, oprot):
+        args = removeGroupResourceProfile_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = removeGroupResourceProfile_result()
+        try:
+            result.success = self._handler.removeGroupResourceProfile(args.authzToken, args.groupResourceProfileId)
+            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("removeGroupResourceProfile", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupResourceList(self, seqid, iprot, oprot):
+        args = getGroupResourceList_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupResourceList_result()
+        try:
+            result.success = self._handler.getGroupResourceList(args.authzToken, args.gatewayId)
+            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("getGroupResourceList", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_removeGroupComputePrefs(self, seqid, iprot, oprot):
+        args = removeGroupComputePrefs_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = removeGroupComputePrefs_result()
+        try:
+            result.success = self._handler.removeGroupComputePrefs(args.authzToken, args.computeResourceId, args.groupResourceProfileId)
+            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("removeGroupComputePrefs", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_removeGroupComputeResourcePolicy(self, seqid, iprot, oprot):
+        args = removeGroupComputeResourcePolicy_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = removeGroupComputeResourcePolicy_result()
+        try:
+            result.success = self._handler.removeGroupComputeResourcePolicy(args.authzToken, args.resourcePolicyId)
+            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("removeGroupComputeResourcePolicy", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_removeGroupBatchQueueResourcePolicy(self, seqid, iprot, oprot):
+        args = removeGroupBatchQueueResourcePolicy_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = removeGroupBatchQueueResourcePolicy_result()
+        try:
+            result.success = self._handler.removeGroupBatchQueueResourcePolicy(args.authzToken, args.resourcePolicyId)
+            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("removeGroupBatchQueueResourcePolicy", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupComputeResourcePreference(self, seqid, iprot, oprot):
+        args = getGroupComputeResourcePreference_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupComputeResourcePreference_result()
+        try:
+            result.success = self._handler.getGroupComputeResourcePreference(args.authzToken, args.computeResourceId, args.groupResourceProfileId)
+            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("getGroupComputeResourcePreference", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupComputeResourcePolicy(self, seqid, iprot, oprot):
+        args = getGroupComputeResourcePolicy_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupComputeResourcePolicy_result()
+        try:
+            result.success = self._handler.getGroupComputeResourcePolicy(args.authzToken, args.resourcePolicyId)
+            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("getGroupComputeResourcePolicy", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getBatchQueueResourcePolicy(self, seqid, iprot, oprot):
+        args = getBatchQueueResourcePolicy_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getBatchQueueResourcePolicy_result()
+        try:
+            result.success = self._handler.getBatchQueueResourcePolicy(args.authzToken, args.resourcePolicyId)
+            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("getBatchQueueResourcePolicy", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupComputeResourcePrefList(self, seqid, iprot, oprot):
+        args = getGroupComputeResourcePrefList_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupComputeResourcePrefList_result()
+        try:
+            result.success = self._handler.getGroupComputeResourcePrefList(args.authzToken, args.groupResourceProfileId)
+            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("getGroupComputeResourcePrefList", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupBatchQueueResourcePolicyList(self, seqid, iprot, oprot):
+        args = getGroupBatchQueueResourcePolicyList_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupBatchQueueResourcePolicyList_result()
+        try:
+            result.success = self._handler.getGroupBatchQueueResourcePolicyList(args.authzToken, args.groupResourceProfileId)
+            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("getGroupBatchQueueResourcePolicyList", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+    def process_getGroupComputeResourcePolicyList(self, seqid, iprot, oprot):
+        args = getGroupComputeResourcePolicyList_args()
+        args.read(iprot)
+        iprot.readMessageEnd()
+        result = getGroupComputeResourcePolicyList_result()
+        try:
+            result.success = self._handler.getGroupComputeResourcePolicyList(args.authzToken, args.groupResourceProfileId)
+            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("getGroupComputeResourcePolicyList", msg_type, seqid)
+        result.write(oprot)
+        oprot.writeMessageEnd()
+        oprot.trans.flush()
+
+# HELPER FUNCTIONS AND STRUCTURES
+
+
+class getAPIVersion_args(object):
+    """
+    Attributes:
+     - authzToken
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+    )
+
+    def __init__(self, authzToken=None,):
+        self.authzToken = authzToken
+
+    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)
+            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('getAPIVersion_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken 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 getAPIVersion_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, '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.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)
+                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('getAPIVersion_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.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 isUserExists_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - userName
+    """
+
+    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
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, userName=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.userName = userName
+
+    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)
+            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('isUserExists_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()
+        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!')
+        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 isUserExists_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('isUserExists_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 addGateway_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gateway
+    """
+
+    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, 'gateway', (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.thrift_spec), None, ),  # 2
+    )
+
+    def __init__(self, authzToken=None, gateway=None,):
+        self.authzToken = authzToken
+        self.gateway = gateway
+
+    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.STRUCT:
+                    self.gateway = airavata.model.workspace.ttypes.Gateway()
+                    self.gateway.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('addGateway_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.gateway is not None:
+            oprot.writeFieldBegin('gateway', TType.STRUCT, 2)
+            self.gateway.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.gateway is None:
+            raise TProtocolException(message='Required field gateway 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 addGateway_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, '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.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)
+                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('addGateway_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.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 getAllUsersInGateway_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, 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:
+            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)
+            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('getAllUsersInGateway_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):
+        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 getAllUsersInGateway_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (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
+        (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 = []
+                    (_etype3, _size0) = iprot.readListBegin()
+                    for _i4 in range(_size0):
+                        _elem5 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success.append(_elem5)
+                    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('getAllUsersInGateway_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRING, len(self.success))
+            for iter6 in self.success:
+                oprot.writeString(iter6.encode('utf-8') if sys.version_info[0] == 2 else iter6)
+            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 updateGateway_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - updatedGateway
+    """
+
+    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, 'updatedGateway', (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.thrift_spec), None, ),  # 3
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, updatedGateway=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.updatedGateway = updatedGateway
+
+    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.STRUCT:
+                    self.updatedGateway = airavata.model.workspace.ttypes.Gateway()
+                    self.updatedGateway.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('updateGateway_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.updatedGateway is not None:
+            oprot.writeFieldBegin('updatedGateway', TType.STRUCT, 3)
+            self.updatedGateway.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.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.updatedGateway is None:
+            raise TProtocolException(message='Required field updatedGateway 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 updateGateway_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('updateGateway_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 getGateway_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, 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:
+            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)
+            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('getGateway_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):
+        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 getGateway_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.STRUCT, 'success', (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.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
+    )
+
+    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.STRUCT:
+                    self.success = airavata.model.workspace.ttypes.Gateway()
+                    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.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('getGateway_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.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 deleteGateway_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, 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:
+            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)
+            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('deleteGateway_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):
+        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 deleteGateway_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('deleteGateway_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 getAllGateways_args(object):
+    """
+    Attributes:
+     - authzToken
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ),  # 1
+    )
+
+    def __init__(self, authzToken=None,):
+        self.authzToken = authzToken
+
+    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)
+            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('getAllGateways_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.authzToken is None:
+            raise TProtocolException(message='Required field authzToken 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 getAllGateways_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.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 = []
+                    (_etype10, _size7) = iprot.readListBegin()
+                    for _i11 in range(_size7):
+                        _elem12 = airavata.model.workspace.ttypes.Gateway()
+                        _elem12.read(iprot)
+                        self.success.append(_elem12)
+                    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('getAllGateways_result')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.LIST, 0)
+            oprot.writeListBegin(TType.STRUCT, len(self.success))
+            for iter13 in self.success:
+                iter13.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 isGatewayExist_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, 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:
+            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)
+            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('isGatewayExist_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):
+        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 isGatewayExist_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('isGatewayExist_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 createNotification_args(object):
+    """
+    Attributes:
+     - authzToken
+     - notification
+    """
+
+    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, 'notification', (airavata.model.workspace.ttypes.Notification, airavata.model.workspace.ttypes.Notification.thrift_spec), None, ),  # 2
+    )
+
+    def __init__(self, authzToken=None, notification=None,):
+        self.authzToken = authzToken
+        self.notification = notification
+
+    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.STRUCT:
+                    self.notification = airavata.model.workspace.ttypes.Notification()
+                    self.notification.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('createNotification_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.notification is not None:
+            oprot.writeFieldBegin('notification', TType.STRUCT, 2)
+            self.notification.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.notification is None:
+            raise TProtocolException(message='Required field notification 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 createNotification_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, '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.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)
+                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('createNotification_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.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 updateNotification_args(object):
+    """
+    Attributes:
+     - authzToken
+     - notification
+    """
+
+    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, 'notification', (airavata.model.workspace.ttypes.Notification, airavata.model.workspace.ttypes.Notification.thrift_spec), None, ),  # 2
+    )
+
+    def __init__(self, authzToken=None, notification=None,):
+        self.authzToken = authzToken
+        self.notification = notification
+
+    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.STRUCT:
+                    self.notification = airavata.model.workspace.ttypes.Notification()
+                    self.notification.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('updateNotification_args')
+        if self.authzToken is not None:
+            oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
+            self.authzToken.write(oprot)
+            oprot.writeFieldEnd()
+        if self.notification is not None:
+            oprot.writeFieldBegin('notification', TType.STRUCT, 2)
+            self.notification.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.notification is None:
+            raise TProtocolException(message='Required field notification 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 updateNotification_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('updateNotification_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 deleteNotification_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - notificationId
+    """
+
+    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, 'notificationId', 'UTF8', None, ),  # 3
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, notificationId=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.notificationId = notificationId
+
+    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.notificationId = 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('deleteNotification_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.notificationId is not None:
+            oprot.writeFieldBegin('notificationId', TType.STRING, 3)
+            oprot.writeString(self.notificationId.encode('utf-8') if sys.version_info[0] == 2 else self.notificationId)
+            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.notificationId is None:
+            raise TProtocolException(message='Required field notificationId 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 deleteNotification_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('deleteNotification_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 getNotification_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - notificationId
+    """
+
+    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, 'notificationId', 'UTF8', None, ),  # 3
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, notificationId=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.notificationId = notificationId
+
+    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.notificationId = 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('getNotification_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.notificationId is not None:
+            oprot.writeFieldBegin('notificationId', TType.STRING, 3)
+            oprot.writeString(self.notificationId.encode('utf-8') if sys.version_info[0] == 2 else self.notificationId)
+            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.notificationId is None:
+            raise TProtocolException(message='Required field notificationId 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 getNotification_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+     - ae
+    """
+
+    thrift_spec = (
+        (0, TType.STRUCT, 'success', (airavata.model.workspace.ttypes.Notification, airavata.model.workspace.ttypes.Notification.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
+    )
+
+    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.STRUCT:
+                    self.success = airavata.model.workspace.ttypes.Notification()
+                    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.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('getNotification_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.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 process_revokeSharingOfResourceFromUsers(self, seqid, iprot, oprot):
-        args = revokeSharingOfResourceFromUsers_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = revokeSharingOfResourceFromUsers_result()
-        try:
-            result.success = self._handler.revokeSharingOfResourceFromUsers(args.authzToken, args.resourceId, args.resourceType, args.userPermissionList)
-            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("revokeSharingOfResourceFromUsers", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
-    def process_getAllAccessibleUsers(self, seqid, iprot, oprot):
-        args = getAllAccessibleUsers_args()
-        args.read(iprot)
-        iprot.readMessageEnd()
-        result = getAllAccessibleUsers_result()
-        try:
-            result.success = self._handler.getAllAccessibleUsers(args.authzToken, args.resourceId, args.resourceType, args.permissionType)
-            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("getAllAccessibleUsers", msg_type, seqid)
-        result.write(oprot)
-        oprot.writeMessageEnd()
-        oprot.trans.flush()
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
 
-# HELPER FUNCTIONS AND STRUCTURES
+    def __ne__(self, other):
+        return not (self == other)
 
 
-class getAPIVersion_args(object):
+class getAllNotifications_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:
@@ -17936,6 +21786,11 @@ class getAPIVersion_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()
@@ -17945,17 +21800,23 @@ class getAPIVersion_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('getAPIVersion_args')
+        oprot.writeStructBegin('getAllNotifications_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):
@@ -17970,7 +21831,7 @@ class getAPIVersion_args(object):
         return not (self == other)
 
 
-class getAPIVersion_result(object):
+class getAllNotifications_result(object):
     """
     Attributes:
      - success
@@ -17981,7 +21842,7 @@ class getAPIVersion_result(object):
     """
 
     thrift_spec = (
-        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Notification, airavata.model.workspace.ttypes.Notification.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
@@ -18005,8 +21866,14 @@ class getAPIVersion_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 = []
+                    (_etype17, _size14) = iprot.readListBegin()
+                    for _i18 in range(_size14):
+                        _elem19 = airavata.model.workspace.ttypes.Notification()
+                        _elem19.read(iprot)
+                        self.success.append(_elem19)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -18042,10 +21909,13 @@ class getAPIVersion_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('getAPIVersion_result')
+        oprot.writeStructBegin('getAllNotifications_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 iter20 in self.success:
+                iter20.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -18081,12 +21951,14 @@ class getAPIVersion_result(object):
         return not (self == other)
 
 
-class isUserExists_args(object):
+class generateAndRegisterSSHKeys_args(object):
     """
     Attributes:
      - authzToken
      - gatewayId
      - userName
+     - description
+     - credentialOwnerType
     """
 
     thrift_spec = (
@@ -18094,12 +21966,16 @@ class isUserExists_args(object):
         (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.STRING, 'description', 'UTF8', None, ),  # 4
+        (5, TType.I32, 'credentialOwnerType', None, None, ),  # 5
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, userName=None,):
+    def __init__(self, authzToken=None, gatewayId=None, userName=None, description=None, credentialOwnerType=None,):
         self.authzToken = authzToken
         self.gatewayId = gatewayId
         self.userName = userName
+        self.description = description
+        self.credentialOwnerType = credentialOwnerType
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -18126,6 +22002,16 @@ class isUserExists_args(object):
                     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.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I32:
+                    self.credentialOwnerType = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -18135,7 +22021,7 @@ class isUserExists_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('isUserExists_args')
+        oprot.writeStructBegin('generateAndRegisterSSHKeys_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -18148,6 +22034,14 @@ class isUserExists_args(object):
             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.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 4)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        if self.credentialOwnerType is not None:
+            oprot.writeFieldBegin('credentialOwnerType', TType.I32, 5)
+            oprot.writeI32(self.credentialOwnerType)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
@@ -18172,30 +22066,27 @@ class isUserExists_args(object):
         return not (self == other)
 
 
-class isUserExists_result(object):
+class generateAndRegisterSSHKeys_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     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
     )
 
-    def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -18207,8 +22098,8 @@ class isUserExists_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:
@@ -18229,10 +22120,235 @@ class isUserExists_result(object):
                     self.ase.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('generateAndRegisterSSHKeys_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.ace is not None:
+            oprot.writeFieldBegin('ace', TType.STRUCT, 2)
+            self.ace.write(oprot)
+            oprot.writeFieldEnd()
+        if self.ase is not None:
+            oprot.writeFieldBegin('ase', TType.STRUCT, 3)
+            self.ase.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.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 registerPwdCredential_args(object):
+    """
+    Attributes:
+     - authzToken
+     - gatewayId
+     - portalUserName
+     - loginUserName
+     - password
+     - description
+    """
+
+    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, 'portalUserName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'loginUserName', 'UTF8', None, ),  # 4
+        (5, TType.STRING, 'password', 'UTF8', None, ),  # 5
+        (6, TType.STRING, 'description', 'UTF8', None, ),  # 6
+    )
+
+    def __init__(self, authzToken=None, gatewayId=None, portalUserName=None, loginUserName=None, password=None, description=None,):
+        self.authzToken = authzToken
+        self.gatewayId = gatewayId
+        self.portalUserName = portalUserName
+        self.loginUserName = loginUserName
+        self.password = password
+        self.description = description
+
+    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.portalUserName = 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.loginUserName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.password = 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.description = 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('registerPwdCredential_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.portalUserName is not None:
+            oprot.writeFieldBegin('portalUserName', TType.STRING, 3)
+            oprot.writeString(self.portalUserName.encode('utf-8') if sys.version_info[0] == 2 else self.portalUserName)
+            oprot.writeFieldEnd()
+        if self.loginUserName is not None:
+            oprot.writeFieldBegin('loginUserName', TType.STRING, 4)
+            oprot.writeString(self.loginUserName.encode('utf-8') if sys.version_info[0] == 2 else self.loginUserName)
+            oprot.writeFieldEnd()
+        if self.password is not None:
+            oprot.writeFieldBegin('password', TType.STRING, 5)
+            oprot.writeString(self.password.encode('utf-8') if sys.version_info[0] == 2 else self.password)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 6)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            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.portalUserName is None:
+            raise TProtocolException(message='Required field portalUserName is unset!')
+        if self.loginUserName is None:
+            raise TProtocolException(message='Required field loginUserName is unset!')
+        if self.password is None:
+            raise TProtocolException(message='Required field password is unset!')
+        if self.description is None:
+            raise TProtocolException(message='Required field description 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 registerPwdCredential_result(object):
+    """
+    Attributes:
+     - success
+     - ire
+     - ace
+     - ase
+    """
+
+    thrift_spec = (
+        (0, TType.STRING, 'success', 'UTF8', None, ),  # 0
+        (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, '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
+    )
+
+    def __init__(self, success=None, ire=None, ace=None, ase=None,):
+        self.success = success
+        self.ire = ire
+        self.ace = ace
+        self.ase = ase
+
+    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.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.ae = airavata.api.error.ttypes.AuthorizationException()
-                    self.ae.read(iprot)
+                    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)
             else:
@@ -18244,10 +22360,10 @@ class isUserExists_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('isUserExists_result')
+        oprot.writeStructBegin('registerPwdCredential_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)
@@ -18261,10 +22377,6 @@ class isUserExists_result(object):
             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()
 
@@ -18283,22 +22395,25 @@ class isUserExists_result(object):
         return not (self == other)
 
 
-class addGateway_args(object):
+class getSSHPubKey_args(object):
     """
     Attributes:
      - authzToken
-     - gateway
+     - airavataCredStoreToken
+     - 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.STRUCT, 'gateway', (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.thrift_spec), None, ),  # 2
+        (2, TType.STRING, 'airavataCredStoreToken', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gateway=None,):
+    def __init__(self, authzToken=None, airavataCredStoreToken=None, gatewayId=None,):
         self.authzToken = authzToken
-        self.gateway = gateway
+        self.airavataCredStoreToken = airavataCredStoreToken
+        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:
@@ -18316,9 +22431,13 @@ class addGateway_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
-                if ftype == TType.STRUCT:
-                    self.gateway = airavata.model.workspace.ttypes.Gateway()
-                    self.gateway.read(iprot)
+                if ftype == TType.STRING:
+                    self.airavataCredStoreToken = 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:
@@ -18330,14 +22449,18 @@ class addGateway_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('addGateway_args')
+        oprot.writeStructBegin('getSSHPubKey_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.gateway is not None:
-            oprot.writeFieldBegin('gateway', TType.STRUCT, 2)
-            self.gateway.write(oprot)
+        if self.airavataCredStoreToken is not None:
+            oprot.writeFieldBegin('airavataCredStoreToken', TType.STRING, 2)
+            oprot.writeString(self.airavataCredStoreToken.encode('utf-8') if sys.version_info[0] == 2 else self.airavataCredStoreToken)
+            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()
@@ -18345,8 +22468,10 @@ class addGateway_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.gateway is None:
-            raise TProtocolException(message='Required field gateway is unset!')
+        if self.airavataCredStoreToken is None:
+            raise TProtocolException(message='Required field airavataCredStoreToken is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -18361,14 +22486,13 @@ class addGateway_args(object):
         return not (self == other)
 
 
-class addGateway_result(object):
+class getSSHPubKey_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     thrift_spec = (
@@ -18376,15 +22500,13 @@ class addGateway_result(object):
         (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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -18418,12 +22540,6 @@ class addGateway_result(object):
                     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()
@@ -18433,7 +22549,7 @@ class addGateway_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('addGateway_result')
+        oprot.writeStructBegin('getSSHPubKey_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)
@@ -18450,10 +22566,6 @@ class addGateway_result(object):
             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()
 
@@ -18472,7 +22584,7 @@ class addGateway_result(object):
         return not (self == other)
 
 
-class getAllUsersInGateway_args(object):
+class getAllGatewaySSHPubKeys_args(object):
     """
     Attributes:
      - authzToken
@@ -18518,7 +22630,7 @@ class getAllUsersInGateway_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('getAllUsersInGateway_args')
+        oprot.writeStructBegin('getAllGatewaySSHPubKeys_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -18549,30 +22661,27 @@ class getAllUsersInGateway_args(object):
         return not (self == other)
 
 
-class getAllUsersInGateway_result(object):
+class getAllGatewaySSHPubKeys_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRING, 'UTF8', False), None, ),  # 0
+        (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 0
         (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ),  # 1
         (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ),  # 2
         (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ),  # 3
-        (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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -18584,13 +22693,14 @@ class getAllUsersInGateway_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype3, _size0) = iprot.readListBegin()
-                    for _i4 in range(_size0):
-                        _elem5 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                        self.success.append(_elem5)
-                    iprot.readListEnd()
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype22, _vtype23, _size21) = iprot.readMapBegin()
+                    for _i25 in range(_size21):
+                        _key26 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val27 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key26] = _val27
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -18611,12 +22721,6 @@ class getAllUsersInGateway_result(object):
                     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()
@@ -18626,13 +22730,14 @@ class getAllUsersInGateway_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('getAllUsersInGateway_result')
+        oprot.writeStructBegin('getAllGatewaySSHPubKeys_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRING, len(self.success))
-            for iter6 in self.success:
-                oprot.writeString(iter6.encode('utf-8') if sys.version_info[0] == 2 else iter6)
-            oprot.writeListEnd()
+            oprot.writeFieldBegin('success', TType.MAP, 0)
+            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
+            for kiter28, viter29 in self.success.items():
+                oprot.writeString(kiter28.encode('utf-8') if sys.version_info[0] == 2 else kiter28)
+                oprot.writeString(viter29.encode('utf-8') if sys.version_info[0] == 2 else viter29)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -18646,10 +22751,6 @@ class getAllUsersInGateway_result(object):
             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()
 
@@ -18668,25 +22769,25 @@ class getAllUsersInGateway_result(object):
         return not (self == other)
 
 
-class updateGateway_args(object):
+class getAllCredentialSummaryForGateway_args(object):
     """
     Attributes:
      - authzToken
+     - type
      - gatewayId
-     - updatedGateway
     """
 
     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, 'updatedGateway', (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.thrift_spec), None, ),  # 3
+        (2, TType.I32, 'type', None, None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, updatedGateway=None,):
+    def __init__(self, authzToken=None, type=None, gatewayId=None,):
         self.authzToken = authzToken
+        self.type = type
         self.gatewayId = gatewayId
-        self.updatedGateway = updatedGateway
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -18704,14 +22805,13 @@ class updateGateway_args(object):
                 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()
+                if ftype == TType.I32:
+                    self.type = iprot.readI32()
                 else:
                     iprot.skip(ftype)
             elif fid == 3:
-                if ftype == TType.STRUCT:
-                    self.updatedGateway = airavata.model.workspace.ttypes.Gateway()
-                    self.updatedGateway.read(iprot)
+                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:
@@ -18723,29 +22823,29 @@ class updateGateway_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('updateGateway_args')
+        oprot.writeStructBegin('getAllCredentialSummaryForGateway_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.type is not None:
+            oprot.writeFieldBegin('type', TType.I32, 2)
+            oprot.writeI32(self.type)
+            oprot.writeFieldEnd()
         if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
-        if self.updatedGateway is not None:
-            oprot.writeFieldBegin('updatedGateway', TType.STRUCT, 3)
-            self.updatedGateway.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.type is None:
+            raise TProtocolException(message='Required field type is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
-        if self.updatedGateway is None:
-            raise TProtocolException(message='Required field updatedGateway is unset!')
         return
 
     def __repr__(self):
@@ -18760,30 +22860,27 @@ class updateGateway_args(object):
         return not (self == other)
 
 
-class updateGateway_result(object):
+class getAllCredentialSummaryForGateway_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.credential.store.ttypes.CredentialSummary, airavata.model.credential.store.ttypes.CredentialSummary.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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -18795,8 +22892,14 @@ class updateGateway_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype33, _size30) = iprot.readListBegin()
+                    for _i34 in range(_size30):
+                        _elem35 = airavata.model.credential.store.ttypes.CredentialSummary()
+                        _elem35.read(iprot)
+                        self.success.append(_elem35)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -18817,12 +22920,6 @@ class updateGateway_result(object):
                     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()
@@ -18832,10 +22929,13 @@ class updateGateway_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('updateGateway_result')
+        oprot.writeStructBegin('getAllCredentialSummaryForGateway_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 iter36 in self.success:
+                iter36.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -18849,10 +22949,6 @@ class updateGateway_result(object):
             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()
 
@@ -18871,22 +22967,28 @@ class updateGateway_result(object):
         return not (self == other)
 
 
-class getGateway_args(object):
+class getAllCredentialSummaryForUsersInGateway_args(object):
     """
     Attributes:
      - authzToken
+     - type
      - gatewayId
+     - userId
     """
 
     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.I32, 'type', None, None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'userId', 'UTF8', None, ),  # 4
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, type=None, gatewayId=None, userId=None,):
         self.authzToken = authzToken
+        self.type = type
         self.gatewayId = gatewayId
+        self.userId = userId
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -18904,10 +23006,20 @@ class getGateway_args(object):
                 else:
                     iprot.skip(ftype)
             elif fid == 2:
+                if ftype == TType.I32:
+                    self.type = iprot.readI32()
+                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)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.userId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
             else:
                 iprot.skip(ftype)
             iprot.readFieldEnd()
@@ -18917,23 +23029,35 @@ class getGateway_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('getGateway_args')
+        oprot.writeStructBegin('getAllCredentialSummaryForUsersInGateway_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.type is not None:
+            oprot.writeFieldBegin('type', TType.I32, 2)
+            oprot.writeI32(self.type)
+            oprot.writeFieldEnd()
         if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
             oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
             oprot.writeFieldEnd()
+        if self.userId is not None:
+            oprot.writeFieldBegin('userId', TType.STRING, 4)
+            oprot.writeString(self.userId.encode('utf-8') if sys.version_info[0] == 2 else self.userId)
+            oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
 
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.type is None:
+            raise TProtocolException(message='Required field type is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.userId is None:
+            raise TProtocolException(message='Required field userId is unset!')
         return
 
     def __repr__(self):
@@ -18948,30 +23072,27 @@ class getGateway_args(object):
         return not (self == other)
 
 
-class getGateway_result(object):
+class getAllCredentialSummaryForUsersInGateway_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     thrift_spec = (
-        (0, TType.STRUCT, 'success', (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.thrift_spec), None, ),  # 0
+        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.credential.store.ttypes.CredentialSummary, airavata.model.credential.store.ttypes.CredentialSummary.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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -18983,9 +23104,14 @@ class getGateway_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.STRUCT:
-                    self.success = airavata.model.workspace.ttypes.Gateway()
-                    self.success.read(iprot)
+                if ftype == TType.LIST:
+                    self.success = []
+                    (_etype40, _size37) = iprot.readListBegin()
+                    for _i41 in range(_size37):
+                        _elem42 = airavata.model.credential.store.ttypes.CredentialSummary()
+                        _elem42.read(iprot)
+                        self.success.append(_elem42)
+                    iprot.readListEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -19006,12 +23132,6 @@ class getGateway_result(object):
                     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()
@@ -19021,10 +23141,13 @@ class getGateway_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('getGateway_result')
+        oprot.writeStructBegin('getAllCredentialSummaryForUsersInGateway_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 iter43 in self.success:
+                iter43.write(oprot)
+            oprot.writeListEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -19038,10 +23161,6 @@ class getGateway_result(object):
             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()
 
@@ -19060,7 +23179,7 @@ class getGateway_result(object):
         return not (self == other)
 
 
-class deleteGateway_args(object):
+class getAllGatewayPWDCredentials_args(object):
     """
     Attributes:
      - authzToken
@@ -19106,7 +23225,7 @@ class deleteGateway_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('deleteGateway_args')
+        oprot.writeStructBegin('getAllGatewayPWDCredentials_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
@@ -19137,30 +23256,27 @@ class deleteGateway_args(object):
         return not (self == other)
 
 
-class deleteGateway_result(object):
+class getAllGatewayPWDCredentials_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     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
-        (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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -19172,8 +23288,14 @@ class deleteGateway_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.BOOL:
-                    self.success = iprot.readBool()
+                if ftype == TType.MAP:
+                    self.success = {}
+                    (_ktype45, _vtype46, _size44) = iprot.readMapBegin()
+                    for _i48 in range(_size44):
+                        _key49 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        _val50 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                        self.success[_key49] = _val50
+                    iprot.readMapEnd()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -19194,12 +23316,6 @@ class deleteGateway_result(object):
                     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()
@@ -19209,10 +23325,14 @@ class deleteGateway_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('deleteGateway_result')
+        oprot.writeStructBegin('getAllGatewayPWDCredentials_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 kiter51, viter52 in self.success.items():
+                oprot.writeString(kiter51.encode('utf-8') if sys.version_info[0] == 2 else kiter51)
+                oprot.writeString(viter52.encode('utf-8') if sys.version_info[0] == 2 else viter52)
+            oprot.writeMapEnd()
             oprot.writeFieldEnd()
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
@@ -19226,10 +23346,6 @@ class deleteGateway_result(object):
             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()
 
@@ -19248,19 +23364,25 @@ class deleteGateway_result(object):
         return not (self == other)
 
 
-class getAllGateways_args(object):
+class deleteSSHPubKey_args(object):
     """
     Attributes:
      - authzToken
+     - airavataCredStoreToken
+     - 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, 'airavataCredStoreToken', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None,):
+    def __init__(self, authzToken=None, airavataCredStoreToken=None, gatewayId=None,):
         self.authzToken = authzToken
+        self.airavataCredStoreToken = airavataCredStoreToken
+        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:
@@ -19277,6 +23399,16 @@ class getAllGateways_args(object):
                     self.authzToken.read(iprot)
                 else:
                     iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.airavataCredStoreToken = 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()
@@ -19286,17 +23418,29 @@ class getAllGateways_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('getAllGateways_args')
+        oprot.writeStructBegin('deleteSSHPubKey_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.airavataCredStoreToken is not None:
+            oprot.writeFieldBegin('airavataCredStoreToken', TType.STRING, 2)
+            oprot.writeString(self.airavataCredStoreToken.encode('utf-8') if sys.version_info[0] == 2 else self.airavataCredStoreToken)
+            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.airavataCredStoreToken is None:
+            raise TProtocolException(message='Required field airavataCredStoreToken is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
         return
 
     def __repr__(self):
@@ -19311,30 +23455,27 @@ class getAllGateways_args(object):
         return not (self == other)
 
 
-class getAllGateways_result(object):
+class deleteSSHPubKey_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     thrift_spec = (
-        (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.workspace.ttypes.Gateway, airavata.model.workspace.ttypes.Gateway.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
-        (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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -19346,14 +23487,8 @@ class getAllGateways_result(object):
             if ftype == TType.STOP:
                 break
             if fid == 0:
-                if ftype == TType.LIST:
-                    self.success = []
-                    (_etype10, _size7) = iprot.readListBegin()
-                    for _i11 in range(_size7):
-                        _elem12 = airavata.model.workspace.ttypes.Gateway()
-                        _elem12.read(iprot)
-                        self.success.append(_elem12)
-                    iprot.readListEnd()
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -19374,12 +23509,6 @@ class getAllGateways_result(object):
                     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()
@@ -19389,13 +23518,10 @@ class getAllGateways_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('getAllGateways_result')
+        oprot.writeStructBegin('deleteSSHPubKey_result')
         if self.success is not None:
-            oprot.writeFieldBegin('success', TType.LIST, 0)
-            oprot.writeListBegin(TType.STRUCT, len(self.success))
-            for iter13 in self.success:
-                iter13.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)
@@ -19409,10 +23535,6 @@ class getAllGateways_result(object):
             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()
 
@@ -19431,21 +23553,24 @@ class getAllGateways_result(object):
         return not (self == other)
 
 
-class isGatewayExist_args(object):
+class deletePWDCredential_args(object):
     """
     Attributes:
      - authzToken
+     - airavataCredStoreToken
      - 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
+        (2, TType.STRING, 'airavataCredStoreToken', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, gatewayId=None,):
+    def __init__(self, authzToken=None, airavataCredStoreToken=None, gatewayId=None,):
         self.authzToken = authzToken
+        self.airavataCredStoreToken = airavataCredStoreToken
         self.gatewayId = gatewayId
 
     def read(self, iprot):
@@ -19465,6 +23590,11 @@ class isGatewayExist_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
+                    self.airavataCredStoreToken = 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)
@@ -19477,13 +23607,17 @@ class isGatewayExist_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('isGatewayExist_args')
+        oprot.writeStructBegin('deletePWDCredential_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
+        if self.airavataCredStoreToken is not None:
+            oprot.writeFieldBegin('airavataCredStoreToken', TType.STRING, 2)
+            oprot.writeString(self.airavataCredStoreToken.encode('utf-8') if sys.version_info[0] == 2 else self.airavataCredStoreToken)
+            oprot.writeFieldEnd()
         if self.gatewayId is not None:
-            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            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()
@@ -19492,6 +23626,8 @@ class isGatewayExist_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
+        if self.airavataCredStoreToken is None:
+            raise TProtocolException(message='Required field airavataCredStoreToken is unset!')
         if self.gatewayId is None:
             raise TProtocolException(message='Required field gatewayId is unset!')
         return
@@ -19508,14 +23644,13 @@ class isGatewayExist_args(object):
         return not (self == other)
 
 
-class isGatewayExist_result(object):
+class deletePWDCredential_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
-     - ae
     """
 
     thrift_spec = (
@@ -19523,15 +23658,13 @@ class isGatewayExist_result(object):
         (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,):
+    def __init__(self, success=None, ire=None, ace=None, ase=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:
@@ -19565,12 +23698,6 @@ class isGatewayExist_result(object):
                     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()
@@ -19580,7 +23707,7 @@ class isGatewayExist_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('isGatewayExist_result')
+        oprot.writeStructBegin('deletePWDCredential_result')
         if self.success is not None:
             oprot.writeFieldBegin('success', TType.BOOL, 0)
             oprot.writeBool(self.success)
@@ -19597,10 +23724,6 @@ class isGatewayExist_result(object):
             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()
 
@@ -19619,22 +23742,25 @@ class isGatewayExist_result(object):
         return not (self == other)
 
 
-class createNotification_args(object):
+class createProject_args(object):
     """
     Attributes:
      - authzToken
-     - notification
+     - gatewayId
+     - project
     """
 
     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, 'notification', (airavata.model.workspace.ttypes.Notification, airavata.model.workspace.ttypes.Notification.thrift_spec), None, ),  # 2
+        (2, TType.STRING, 'gatewayId', 'UTF8', None, ),  # 2
+        (3, TType.STRUCT, 'project', (airavata.model.workspace.ttypes.Project, airavata.model.workspace.ttypes.Project.thrift_spec), None, ),  # 3
     )
 
-    def __init__(self, authzToken=None, notification=None,):
+    def __init__(self, authzToken=None, gatewayId=None, project=None,):
         self.authzToken = authzToken
-        self.notification = notification
+        self.gatewayId = gatewayId
+        self.project = project
 
     def read(self, iprot):
         if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -19652,9 +23778,14 @@ class createNotification_args(object):
                 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.STRUCT:
-                    self.notification = airavata.model.workspace.ttypes.Notification()
-                    self.notification.read(iprot)
+                    self.project = airavata.model.workspace.ttypes.Project()
+                    self.project.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -19666,14 +23797,18 @@ class createNotification_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('createNotification_args')
+        oprot.writeStructBegin('createProject_args')
         if self.authzToken is not None:
             oprot.writeFieldBegin('authzToken', TType.STRUCT, 1)
             self.authzToken.write(oprot)
             oprot.writeFieldEnd()
-        if self.notification is not None:
-            oprot.writeFieldBegin('notification', TType.STRUCT, 2)
-            self.notification.write(oprot)
+        if self.gatewayId is not None:
+            oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+            oprot.writeString(self.gatewayId.encode('utf-8') if sys.version_info[0] == 2 else self.gatewayId)
+            oprot.writeFieldEnd()
+        if self.project is not None:
+            oprot.writeFieldBegin('project', TType.STRUCT, 3)
+            self.project.write(oprot)
             oprot.writeFieldEnd()
         oprot.writeFieldStop()
         oprot.writeStructEnd()
@@ -19681,8 +23816,10 @@ class createNotification_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.notification is None:
-            raise TProtocolException(message='Required field notification is unset!')
+        if self.gatewayId is None:
+            raise TProtocolException(message='Required field gatewayId is unset!')
+        if self.project is None:
+            raise TProtocolException(message='Required field project is unset!')
         return
 
     def __repr__(self):
@@ -19697,7 +23834,7 @@ class createNotification_args(object):
         return not (self == other)
 
 
-class createNotification_result(object):
+class createProject_result(object):
     """
     Attributes:
      - success
@@ -19769,7 +23906,7 @@ class createNotification_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('createNotification_result')
+        oprot.writeStructBegin('createProject_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)
@@ -19808,22 +23945,25 @@ class createNotification_result(object):
         return not (self == other)
 
 
-class updateNotification_args(object):
+class updateProject_args(object):
     """
     Attributes:
      - authzToken
-     - notification
+     - 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.STRUCT, 'notification', (airavata.model.workspace.ttypes.Notification, airavata.model.workspace.ttypes.Notification.thrift_spec), None, ),  # 2
+        (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, notification=None,):
+    def __init__(self, authzToken=None, projectId=None, updatedProject=None,):
         self.authzToken = authzToken
-        self.notification = notification
+        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:
@@ -19841,9 +23981,14 @@ class updateNotification_args(object):
                 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.notification = airavata.model.workspace.ttypes.Notification()
-                    self.notification.read(iprot)
+                    self.updatedProject = airavata.model.workspace.ttypes.Project()
+                    self.updatedProject.read(iprot)
                 else:
                     iprot.skip(ftype)
             else:
@@ -19855,14 +24000,18 @@ class updateNotification_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('updateNotification_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.notification is not None:
-            oprot.writeFieldBegin('notification', TType.STRUCT, 2)
-            self.notification.write(oprot)
+        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()
@@ -19870,8 +24019,10 @@ class updateNotification_args(object):
     def validate(self):
         if self.authzToken is None:
             raise TProtocolException(message='Required field authzToken is unset!')
-        if self.notification is None:
-            raise TProtocolException(message='Required field notification 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):
@@ -19886,29 +24037,30 @@ class updateNotification_args(object):
         return not (self == other)
 
 
-class updateNotification_result(object):
+class updateProject_result(object):
     """
     Attributes:
-     - success
      - ire
      - ace
      - ase
+     - pnfe
      - 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
+        (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):
@@ -19920,12 +24072,7 @@ class updateNotification_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)
@@ -19945,6 +24092,12 @@ class updateNotification_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:
@@ -19958,11 +24111,7 @@ class updateNotification_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('updateNotification_result')
-        if self.success is not None:
-            oprot.writeFieldBegin('success', TType.BOOL, 0)
-            oprot.writeBool(self.success)
-            oprot.writeFieldEnd()
+        oprot.writeStructBegin('updateProject_result')
         if self.ire is not None:
             oprot.writeFieldBegin('ire', TType.STRUCT, 1)
             self.ire.write(oprot)
@@ -19975,8 +24124,12 @@ class updateNotification_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()
@@ -19997,25 +24150,22 @@ class updateNotification_result(object):
         return not (self == other)
 
 
-class deleteNotification_args(object):
+class getProject_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - notificationId
+     - 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.STRING, 'notificationId', 'UTF8', None, ),  # 3
+        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, notificationId=None,):
+    def __init__(self, authzToken=None, projectId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.notificationId = notificationId
+        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:
@@ -20034,12 +24184,7 @@ class deleteNotification_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.notificationId = 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:
@@ -20051,18 +24196,14 @@ class deleteNotification_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('deleteNotification_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.notificationId is not None:
-            oprot.writeFieldBegin('notificationId', TType.STRING, 3)
-            oprot.writeString(self.notificationId.encode('utf-8') if sys.version_info[0] == 2 else self.notificationId)
+        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()
@@ -20070,10 +24211,8 @@ class deleteNotification_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.notificationId is None:
-            raise TProtocolException(message='Required field notificationId is unset!')
+        if self.projectId is None:
+            raise TProtocolException(message='Required field projectId is unset!')
         return
 
     def __repr__(self):
@@ -20088,29 +24227,32 @@ class deleteNotification_args(object):
         return not (self == other)
 
 
-class deleteNotification_result(object):
+class getProject_result(object):
     """
     Attributes:
      - success
      - ire
      - ace
      - ase
+     - pnfe
      - ae
     """
 
     thrift_spec = (
-        (0, TType.BOOL, 'success', None, 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):
@@ -20123,8 +24265,9 @@ class deleteNotification_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.workspace.ttypes.Project()
+                    self.success.read(iprot)
                 else:
                     iprot.skip(ftype)
             elif fid == 1:
@@ -20147,6 +24290,12 @@ class deleteNotification_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:
@@ -20160,10 +24309,10 @@ class deleteNotification_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('deleteNotification_result')
+        oprot.writeStructBegin('getProject_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)
@@ -20177,8 +24326,12 @@ class deleteNotification_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()
@@ -20199,25 +24352,22 @@ class deleteNotification_result(object):
         return not (self == other)
 
 
-class getNotification_args(object):
+class deleteProject_args(object):
     """
     Attributes:
      - authzToken
-     - gatewayId
-     - notificationId
+     - 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.STRING, 'notificationId', 'UTF8', None, ),  # 3
+        (2, TType.STRING, 'projectId', 'UTF8', None, ),  # 2
     )
 
-    def __init__(self, authzToken=None, gatewayId=None, notificationId=None,):
+    def __init__(self, authzToken=None, projectId=None,):
         self.authzToken = authzToken
-        self.gatewayId = gatewayId
-        self.notificationId = notificationId
+        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:
@@ -20236,12 +24386,7 @@ class getNotification_args(object):
                     iprot.skip(ftype)
             elif fid == 2:
                 if ftype == TType.STRING:
-                    self.gatewayId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
-                else:
-                    iprot.skip(ftype)
-            elif fid == 3:
-                if ftype == TType.STRING:
-                    self.notificationId = 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:
@@ -20253,18 +24398,14 @@ class getNotification_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('getNotification_args')
+        oprot.writeStructBegin('deleteProject_args')
... 24799 lines suppressed ...

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

[airavata-django-portal] 03/04: AIRAVATA-2688 Fix edit link

Posted by ma...@apache.org.
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 bbda507678e4c294b994f60577287833f524c95c
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Feb 23 01:33:35 2018 -0500

    AIRAVATA-2688 Fix edit link
---
 .../js/groups_components/GroupListItem.vue         | 26 ++++++----------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupListItem.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupListItem.vue
index 3c69956..eb500a7 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupListItem.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupListItem.vue
@@ -3,32 +3,20 @@
         <td>{{ group.name }}</td>
         <td>{{ group.ownerId }}</td>
         <td>{{ group.description }}</td>
-        <td><span v-html="action"></span></td>
+        <td>
+            <a v-if="group.isOwner || group.isAdmin"
+                :href="'/groups/edit/' + encodeURIComponent(group.id) + '/'">
+                Edit <i class="fa fa-pencil"></i>
+            </a>
+        </td>
     </tr>
 </template>
 
 <script>
-import moment from 'moment';
 
 export default {
     name: 'group-list-item',
-    props: ['group', 'type'],
-    computed: {
-      action: function() {
-          // TODO: use (isOwner || isAdmin) here
-          if(this.type == 'owner') {
-            let deleteUrl = "/api/deleteGroup/"+this.group.groupID;
-            let threeSpace = '&nbsp;&nbsp;&nbsp;'
-            return '<a href="#">Edit <i class="fa fa-pencil"></i></a>'+threeSpace+'<a href="'+deleteUrl+'">Delete <i class="fa fa-trash"></i></a>';
-          }
-          else if(this.type == 'member') {
-            return '<a href="#">Leave <i class="fa fa-sign-out"></i></a>'
-          }
-          else {
-            return '';
-          }
-      },
-    }
+    props: ['group'],
 }
 </script>
 

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

[airavata-django-portal] 02/04: AIRAVATA-2688 Adding/removing users in group edit

Posted by ma...@apache.org.
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 3ea3901d9e2858506d2b8a911c03b3ebde18ee49
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Feb 23 01:26:31 2018 -0500

    AIRAVATA-2688 Adding/removing users in group edit
---
 django_airavata/apps/api/serializers.py            |  8 +++++
 django_airavata/apps/api/views.py                  |  9 +++++-
 .../js/groups_components/GroupCreateContainer.vue  |  3 ++
 .../js/groups_components/GroupEditContainer.vue    |  5 +++-
 .../js/groups_components/GroupEditor.vue           | 34 +++++++++-------------
 5 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index da2a10b..cf1e4a5 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -129,6 +129,14 @@ class GroupSerializer(serializers.Serializer):
     def update(self, instance, validated_data):
         instance.name = validated_data.get('name', instance.name)
         instance.description = validated_data.get('description', instance.description)
+        # Calculate added and removed members
+        old_members = set(instance.members)
+        new_members = set(validated_data.get('members', instance.members))
+        removed_members = old_members - new_members
+        added_members = new_members - old_members
+        instance._removed_members = list(removed_members)
+        instance._added_members = list(added_members)
+        instance.members = validated_data.get('members', instance.members)
         return instance
 
     def get_isAdmin(self, group):
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index d0ce7ef..ffe207f 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -218,7 +218,14 @@ class GroupViewSet(APIBackedViewSet):
 
     def perform_update(self, serializer):
         group = serializer.save()
-        self.request.profile_service['group_manager'].updateGroup(self.authz_token, group)
+        group_manager_client = self.request.profile_service['group_manager']
+        if len(group._added_members) > 0:
+            group_manager_client.addUsersToGroup(
+                self.authz_token, group._added_members, group.id)
+        if len(group._removed_members) > 0:
+            group_manager_client.removeUsersFromGroup(
+                self.authz_token, group._removed_members, group.id)
+        group_manager_client.updateGroup(self.authz_token, group)
 
 
 class ProjectViewSet(APIBackedViewSet):
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue
index 81b1dd9..7900407 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue
@@ -22,6 +22,9 @@ export default {
         GroupEditor,
     },
     methods: {
+        handleSaved: function(group) {
+            window.location.assign("/groups/");
+        }
     },
     computed: {
     },
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue
index 19907d9..66fc885 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue
@@ -1,5 +1,5 @@
 <template>
-    <group-editor v-if="group" :group="group"></group-editor>
+    <group-editor v-if="group" :group="group" @saved="handleSaved"></group-editor>
 </template>
 
 <script>
@@ -26,6 +26,9 @@ export default {
         GroupEditor,
     },
     methods: {
+        handleSaved: function(group) {
+            window.location.assign("/groups/");
+        }
     },
     computed: {
     },
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue
index ddba0dc..2749ed4 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue
@@ -4,7 +4,7 @@
       {{ showDismissibleAlert.message }}
     </b-alert>
 
-    <b-form v-if="show">
+    <b-form>
 
       <b-form-group id="group1" label="Group Name:" label-for="group_name" description="Name should only contain Alpha Characters">
         <b-form-input id="group_name" type="text" v-model="localGroup.name" required placeholder="Enter group name">
@@ -40,10 +40,7 @@ export default {
     },
     data () {
         return {
-            selection: '',
             localGroup: this.group.clone(),
-            show: true,
-            selected: [],
             showDismissibleAlert: {'variant':'success', 'message':'no data', 'dismissable':false},
             userProfiles: [],
         }
@@ -53,23 +50,18 @@ export default {
     },
     methods: {
         submitForm () {
-            var temp = [];
-            for(var i=0;i<this.selected.length;i++) {
-                temp.push(this.selected[i].id);
-            }
-            this.localGroup.members = temp;
-            services.GroupService.create(this.localGroup)
-            .then(group => {
-                this.$emit('saved', result);
-            })
-            .catch(error => {
-                this.showDismissibleAlert.dismissable = true;
-                this.showDismissibleAlert.message = "Error: "+error.data;
-                this.showDismissibleAlert.variant = "danger";
-            });
-        },
-        updateSelectedValue(data) {
-            this.selected = data;
+            let saveOperation = (this.localGroup.id)
+                ? services.GroupService.update(this.localGroup)
+                : services.GroupService.create(this.localGroup);
+            saveOperation
+                .then(group => {
+                    this.$emit('saved', group);
+                })
+                .catch(error => {
+                    this.showDismissibleAlert.dismissable = true;
+                    this.showDismissibleAlert.message = "Error: "+error.data;
+                    this.showDismissibleAlert.variant = "danger";
+                });
         },
     },
     computed: {

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

[airavata-django-portal] 04/04: AIRAVATA-2688 Fix isMember for when there are no members

Posted by ma...@apache.org.
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 ab9800d9e7094dedfad7e67db8e56a4b453f313a
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Feb 23 01:35:10 2018 -0500

    AIRAVATA-2688 Fix isMember for when there are no members
---
 django_airavata/apps/api/serializers.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index cf1e4a5..13199f5 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -151,7 +151,7 @@ class GroupSerializer(serializers.Serializer):
     def get_isMember(self, group):
         request = self.context['request']
         username = request.user.username + "@" + settings.GATEWAY_ID
-        return username in group.members
+        return group.members and username in group.members
 
 
 class ProjectSerializer(serializers.Serializer):

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