Copied files for Thrift
authorSaurabh Agrawal <saurabhagrawal0412@gmail.com>
Sat, 16 Dec 2017 05:54:38 +0000 (00:54 -0500)
committerSuresh Marru <smarru@apache.org>
Sat, 16 Dec 2017 12:50:26 +0000 (07:50 -0500)
89 files changed:
cwl-workflows/apache/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/Airavata-remote [new file with mode: 0644]
cwl-workflows/apache/airavata/api/Airavata.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/error/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/error/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/error/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/api/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/appdeployment/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/appdeployment/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/appdeployment/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/appinterface/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/appinterface/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/appinterface/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/computeresource/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/computeresource/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/computeresource/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/gatewayprofile/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/gatewayprofile/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/parallelism/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/parallelism/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/parallelism/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/storageresource/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/storageresource/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/storageresource/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/userresourceprofile/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/userresourceprofile/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/appcatalog/userresourceprofile/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/application/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/application/io/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/application/io/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/application/io/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/commons/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/commons/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/commons/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/movement/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/movement/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/movement/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/replica/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/replica/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/data/replica/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/dbevent/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/dbevent/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/dbevent/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/experiment/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/experiment/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/experiment/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/group/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/group/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/group/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/job/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/job/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/job/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/messaging/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/messaging/event/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/messaging/event/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/messaging/event/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/process/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/process/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/process/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/scheduling/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/scheduling/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/scheduling/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/security/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/security/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/security/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/status/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/status/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/status/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/task/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/task/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/task/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/user/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/user/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/user/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/workflow/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/workflow/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/workflow/ttypes.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/workspace/__init__.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/workspace/constants.py [new file with mode: 0644]
cwl-workflows/apache/airavata/model/workspace/ttypes.py [new file with mode: 0644]

diff --git a/cwl-workflows/apache/__init__.py b/cwl-workflows/apache/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/cwl-workflows/apache/airavata/__init__.py b/cwl-workflows/apache/airavata/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/cwl-workflows/apache/airavata/api/Airavata-remote b/cwl-workflows/apache/airavata/api/Airavata-remote
new file mode 100644 (file)
index 0000000..5ed695e
--- /dev/null
@@ -0,0 +1,1293 @@
+#!/usr/bin/env python
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+import sys
+import pprint
+if sys.version_info[0] > 2:
+    from urllib.parse import urlparse
+else:
+    from urlparse import urlparse
+from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient
+from thrift.protocol.TBinaryProtocol import TBinaryProtocol
+
+from apache.airavata.api import Airavata
+from apache.airavata.api.ttypes import *
+
+if len(sys.argv) <= 1 or sys.argv[1] == '--help':
+    print('')
+    print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]')
+    print('')
+    print('Functions:')
+    print('  string getAPIVersion(AuthzToken authzToken)')
+    print('  bool isUserExists(AuthzToken authzToken, string gatewayId, string userName)')
+    print('  string addGateway(AuthzToken authzToken, Gateway gateway)')
+    print('   getAllUsersInGateway(AuthzToken authzToken, string gatewayId)')
+    print('  bool updateGateway(AuthzToken authzToken, string gatewayId, Gateway updatedGateway)')
+    print('  Gateway getGateway(AuthzToken authzToken, string gatewayId)')
+    print('  bool deleteGateway(AuthzToken authzToken, string gatewayId)')
+    print('   getAllGateways(AuthzToken authzToken)')
+    print('  bool isGatewayExist(AuthzToken authzToken, string gatewayId)')
+    print('  string createNotification(AuthzToken authzToken, Notification notification)')
+    print('  bool updateNotification(AuthzToken authzToken, Notification notification)')
+    print('  bool deleteNotification(AuthzToken authzToken, string gatewayId, string notificationId)')
+    print('  Notification getNotification(AuthzToken authzToken, string gatewayId, string notificationId)')
+    print('   getAllNotifications(AuthzToken authzToken, string gatewayId)')
+    print('  string generateAndRegisterSSHKeys(AuthzToken authzToken, string gatewayId, string userName, string description, CredentialOwnerType credentialOwnerType)')
+    print('  string registerPwdCredential(AuthzToken authzToken, string gatewayId, string portalUserName, string loginUserName, string password, string description)')
+    print('  string getSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+    print('   getAllGatewaySSHPubKeys(AuthzToken authzToken, string gatewayId)')
+    print('   getAllCredentialSummaryForGateway(AuthzToken authzToken, SummaryType type, string gatewayId)')
+    print('   getAllCredentialSummaryForUsersInGateway(AuthzToken authzToken, SummaryType type, string gatewayId, string userId)')
+    print('   getAllGatewayPWDCredentials(AuthzToken authzToken, string gatewayId)')
+    print('  bool deleteSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+    print('  bool deletePWDCredential(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+    print('  string createProject(AuthzToken authzToken, string gatewayId, Project project)')
+    print('  void updateProject(AuthzToken authzToken, string projectId, Project updatedProject)')
+    print('  Project getProject(AuthzToken authzToken, string projectId)')
+    print('  bool deleteProject(AuthzToken authzToken, string projectId)')
+    print('   getUserProjects(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+    print('   searchProjects(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+    print('   searchExperiments(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+    print('  ExperimentStatistics getExperimentStatistics(AuthzToken authzToken, string gatewayId, i64 fromTime, i64 toTime, string userName, string applicationName, string resourceHostName)')
+    print('   getExperimentsInProject(AuthzToken authzToken, string projectId, i32 limit, i32 offset)')
+    print('   getUserExperiments(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+    print('  string createExperiment(AuthzToken authzToken, string gatewayId, ExperimentModel experiment)')
+    print('  bool deleteExperiment(AuthzToken authzToken, string experimentId)')
+    print('  ExperimentModel getExperiment(AuthzToken authzToken, string airavataExperimentId)')
+    print('  ExperimentModel getExperimentByAdmin(AuthzToken authzToken, string airavataExperimentId)')
+    print('  ExperimentModel getDetailedExperimentTree(AuthzToken authzToken, string airavataExperimentId)')
+    print('  void updateExperiment(AuthzToken authzToken, string airavataExperimentId, ExperimentModel experiment)')
+    print('  void updateExperimentConfiguration(AuthzToken authzToken, string airavataExperimentId, UserConfigurationDataModel userConfiguration)')
+    print('  void updateResourceScheduleing(AuthzToken authzToken, string airavataExperimentId, ComputationalResourceSchedulingModel resourceScheduling)')
+    print('  bool validateExperiment(AuthzToken authzToken, string airavataExperimentId)')
+    print('  void launchExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+    print('  ExperimentStatus getExperimentStatus(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getExperimentOutputs(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getIntermediateOutputs(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getJobStatuses(AuthzToken authzToken, string airavataExperimentId)')
+    print('   getJobDetails(AuthzToken authzToken, string airavataExperimentId)')
+    print('  string cloneExperiment(AuthzToken authzToken, string existingExperimentID, string newExperimentName, string newExperimentProjectId)')
+    print('  string cloneExperimentByAdmin(AuthzToken authzToken, string existingExperimentID, string newExperimentName, string newExperimentProjectId)')
+    print('  void terminateExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+    print('  string registerApplicationModule(AuthzToken authzToken, string gatewayId, ApplicationModule applicationModule)')
+    print('  ApplicationModule getApplicationModule(AuthzToken authzToken, string appModuleId)')
+    print('  bool updateApplicationModule(AuthzToken authzToken, string appModuleId, ApplicationModule applicationModule)')
+    print('   getAllAppModules(AuthzToken authzToken, string gatewayId)')
+    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('   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)')
+    print('  ApplicationInterfaceDescription getApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+    print('  bool updateApplicationInterface(AuthzToken authzToken, string appInterfaceId, ApplicationInterfaceDescription applicationInterface)')
+    print('  bool deleteApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+    print('   getAllApplicationInterfaceNames(AuthzToken authzToken, string gatewayId)')
+    print('   getAllApplicationInterfaces(AuthzToken authzToken, string gatewayId)')
+    print('   getApplicationInputs(AuthzToken authzToken, string appInterfaceId)')
+    print('   getApplicationOutputs(AuthzToken authzToken, string appInterfaceId)')
+    print('   getAvailableAppInterfaceComputeResources(AuthzToken authzToken, string appInterfaceId)')
+    print('  string registerComputeResource(AuthzToken authzToken, ComputeResourceDescription computeResourceDescription)')
+    print('  ComputeResourceDescription getComputeResource(AuthzToken authzToken, string computeResourceId)')
+    print('   getAllComputeResourceNames(AuthzToken authzToken)')
+    print('  bool updateComputeResource(AuthzToken authzToken, string computeResourceId, ComputeResourceDescription computeResourceDescription)')
+    print('  bool deleteComputeResource(AuthzToken authzToken, string computeResourceId)')
+    print('  string registerStorageResource(AuthzToken authzToken, StorageResourceDescription storageResourceDescription)')
+    print('  StorageResourceDescription getStorageResource(AuthzToken authzToken, string storageResourceId)')
+    print('   getAllStorageResourceNames(AuthzToken authzToken)')
+    print('  bool updateStorageResource(AuthzToken authzToken, string storageResourceId, StorageResourceDescription storageResourceDescription)')
+    print('  bool deleteStorageResource(AuthzToken authzToken, string storageResourceId)')
+    print('  string addLocalSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, LOCALSubmission localSubmission)')
+    print('  bool updateLocalSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, LOCALSubmission localSubmission)')
+    print('  LOCALSubmission getLocalJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  string addSSHJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+    print('  string addSSHForkJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+    print('  SSHJobSubmission getSSHJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  string addUNICOREJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, UnicoreJobSubmission unicoreJobSubmission)')
+    print('  UnicoreJobSubmission getUnicoreJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  string addCloudJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, CloudJobSubmission cloudSubmission)')
+    print('  CloudJobSubmission getCloudJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+    print('  bool updateSSHJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, SSHJobSubmission sshJobSubmission)')
+    print('  bool updateCloudJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, CloudJobSubmission sshJobSubmission)')
+    print('  bool updateUnicoreJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, UnicoreJobSubmission unicoreJobSubmission)')
+    print('  string addLocalDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, LOCALDataMovement localDataMovement)')
+    print('  bool updateLocalDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, LOCALDataMovement localDataMovement)')
+    print('  LOCALDataMovement getLocalDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  string addSCPDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, SCPDataMovement scpDataMovement)')
+    print('  bool updateSCPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, SCPDataMovement scpDataMovement)')
+    print('  SCPDataMovement getSCPDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  string addUnicoreDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, UnicoreDataMovement unicoreDataMovement)')
+    print('  bool updateUnicoreDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, UnicoreDataMovement unicoreDataMovement)')
+    print('  UnicoreDataMovement getUnicoreDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  string addGridFTPDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, GridFTPDataMovement gridFTPDataMovement)')
+    print('  bool updateGridFTPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, GridFTPDataMovement gridFTPDataMovement)')
+    print('  GridFTPDataMovement getGridFTPDataMovement(AuthzToken authzToken, string dataMovementId)')
+    print('  bool changeJobSubmissionPriority(AuthzToken authzToken, string jobSubmissionInterfaceId, i32 newPriorityOrder)')
+    print('  bool changeDataMovementPriority(AuthzToken authzToken, string dataMovementInterfaceId, i32 newPriorityOrder)')
+    print('  bool changeJobSubmissionPriorities(AuthzToken authzToken,  jobSubmissionPriorityMap)')
+    print('  bool changeDataMovementPriorities(AuthzToken authzToken,  dataMovementPriorityMap)')
+    print('  bool deleteJobSubmissionInterface(AuthzToken authzToken, string computeResourceId, string jobSubmissionInterfaceId)')
+    print('  bool deleteDataMovementInterface(AuthzToken authzToken, string productUri, string dataMovementInterfaceId, DMType dataMoveType)')
+    print('  string registerResourceJobManager(AuthzToken authzToken, ResourceJobManager resourceJobManager)')
+    print('  bool updateResourceJobManager(AuthzToken authzToken, string resourceJobManagerId, ResourceJobManager updatedResourceJobManager)')
+    print('  ResourceJobManager getResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+    print('  bool deleteResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+    print('  bool deleteBatchQueue(AuthzToken authzToken, string computeResourceId, string queueName)')
+    print('  string registerGatewayResourceProfile(AuthzToken authzToken, GatewayResourceProfile gatewayResourceProfile)')
+    print('  GatewayResourceProfile getGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+    print('  bool updateGatewayResourceProfile(AuthzToken authzToken, string gatewayID, GatewayResourceProfile gatewayResourceProfile)')
+    print('  bool deleteGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+    print('  bool addGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+    print('  bool addGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageResourceId, StoragePreference storagePreference)')
+    print('  ComputeResourcePreference getGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+    print('  StoragePreference getGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageResourceId)')
+    print('   getAllGatewayComputeResourcePreferences(AuthzToken authzToken, string gatewayID)')
+    print('   getAllGatewayStoragePreferences(AuthzToken authzToken, string gatewayID)')
+    print('   getAllGatewayResourceProfiles(AuthzToken authzToken)')
+    print('  bool updateGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+    print('  bool updateGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId, StoragePreference storagePreference)')
+    print('  bool deleteGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+    print('  bool deleteGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId)')
+    print('  string registerUserResourceProfile(AuthzToken authzToken, UserResourceProfile userResourceProfile)')
+    print('  UserResourceProfile getUserResourceProfile(AuthzToken authzToken, string userId, string gatewayID)')
+    print('  bool updateUserResourceProfile(AuthzToken authzToken, string userId, string gatewayID, UserResourceProfile userResourceProfile)')
+    print('  bool deleteUserResourceProfile(AuthzToken authzToken, string userId, string gatewayID)')
+    print('  bool addUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId, UserComputeResourcePreference userComputeResourcePreference)')
+    print('  bool addUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageResourceId, UserStoragePreference userStoragePreference)')
+    print('  UserComputeResourcePreference getUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId)')
+    print('  UserStoragePreference getUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageResourceId)')
+    print('   getAllUserComputeResourcePreferences(AuthzToken authzToken, string userId, string gatewayID)')
+    print('   getAllUserStoragePreferences(AuthzToken authzToken, string userId, string gatewayID)')
+    print('   getAllUserResourceProfiles(AuthzToken authzToken)')
+    print('  bool updateUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId, UserComputeResourcePreference userComputeResourcePreference)')
+    print('  bool updateUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageId, UserStoragePreference userStoragePreference)')
+    print('  bool deleteUserComputeResourcePreference(AuthzToken authzToken, string userId, string gatewayID, string userComputeResourceId)')
+    print('  bool deleteUserStoragePreference(AuthzToken authzToken, string userId, string gatewayID, string userStorageId)')
+    print('   getAllWorkflows(AuthzToken authzToken, string gatewayId)')
+    print('   getLatestQueueStatuses(AuthzToken authzToken)')
+    print('  WorkflowModel getWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+    print('  void deleteWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+    print('  string registerWorkflow(AuthzToken authzToken, string gatewayId, WorkflowModel workflow)')
+    print('  void updateWorkflow(AuthzToken authzToken, string workflowTemplateId, WorkflowModel workflow)')
+    print('  string getWorkflowTemplateId(AuthzToken authzToken, string workflowName)')
+    print('  bool isWorkflowExistWithName(AuthzToken authzToken, string workflowName)')
+    print('  string registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel)')
+    print('  DataProductModel getDataProduct(AuthzToken authzToken, string dataProductUri)')
+    print('  string registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel)')
+    print('  DataProductModel getParentDataProduct(AuthzToken authzToken, string productUri)')
+    print('   getChildDataProducts(AuthzToken authzToken, string productUri)')
+    print('  bool shareResourceWithUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+    print('  bool revokeSharingOfResourceFromUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+    print('   getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType, ResourcePermissionType permissionType)')
+    print('  bool createGroup(AuthzToken authzToken, GroupModel groupModel)')
+    print('  bool updateGroup(AuthzToken authzToken, GroupModel groupModel)')
+    print('  bool deleteGroup(AuthzToken authzToken, string groupId, string ownerId, string gatewayId)')
+    print('  GroupModel getGroup(AuthzToken authzToken, string groupId)')
+    print('   getAllGroupsUserBelongs(AuthzToken authzToken, string userName, string gatewayId)')
+    print('')
+    sys.exit(0)
+
+pp = pprint.PrettyPrinter(indent=2)
+host = 'localhost'
+port = 9090
+uri = ''
+framed = False
+ssl = False
+validate = True
+ca_certs = None
+keyfile = None
+certfile = None
+http = False
+argi = 1
+
+if sys.argv[argi] == '-h':
+    parts = sys.argv[argi + 1].split(':')
+    host = parts[0]
+    if len(parts) > 1:
+        port = int(parts[1])
+    argi += 2
+
+if sys.argv[argi] == '-u':
+    url = urlparse(sys.argv[argi + 1])
+    parts = url[1].split(':')
+    host = parts[0]
+    if len(parts) > 1:
+        port = int(parts[1])
+    else:
+        port = 80
+    uri = url[2]
+    if url[4]:
+        uri += '?%s' % url[4]
+    http = True
+    argi += 2
+
+if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
+    framed = True
+    argi += 1
+
+if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
+    ssl = True
+    argi += 1
+
+if sys.argv[argi] == '-novalidate':
+    validate = False
+    argi += 1
+
+if sys.argv[argi] == '-ca_certs':
+    ca_certs = sys.argv[argi+1]
+    argi += 2
+
+if sys.argv[argi] == '-keyfile':
+    keyfile = sys.argv[argi+1]
+    argi += 2
+
+if sys.argv[argi] == '-certfile':
+    certfile = sys.argv[argi+1]
+    argi += 2
+
+cmd = sys.argv[argi]
+args = sys.argv[argi + 1:]
+
+if http:
+    transport = THttpClient.THttpClient(host, port, uri)
+else:
+    if ssl:
+        socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile)
+    else:
+        socket = TSocket.TSocket(host, port)
+    if framed:
+        transport = TTransport.TFramedTransport(socket)
+    else:
+        transport = TTransport.TBufferedTransport(socket)
+protocol = TBinaryProtocol(transport)
+client = Airavata.Client(protocol)
+transport.open()
+
+if cmd == 'getAPIVersion':
+    if len(args) != 1:
+        print('getAPIVersion requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAPIVersion(eval(args[0]),))
+
+elif cmd == 'isUserExists':
+    if len(args) != 3:
+        print('isUserExists requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.isUserExists(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'addGateway':
+    if len(args) != 2:
+        print('addGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.addGateway(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getAllUsersInGateway':
+    if len(args) != 2:
+        print('getAllUsersInGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUsersInGateway(eval(args[0]), args[1],))
+
+elif cmd == 'updateGateway':
+    if len(args) != 3:
+        print('updateGateway requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateGateway(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getGateway':
+    if len(args) != 2:
+        print('getGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGateway(eval(args[0]), args[1],))
+
+elif cmd == 'deleteGateway':
+    if len(args) != 2:
+        print('deleteGateway requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGateway(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGateways':
+    if len(args) != 1:
+        print('getAllGateways requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGateways(eval(args[0]),))
+
+elif cmd == 'isGatewayExist':
+    if len(args) != 2:
+        print('isGatewayExist requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.isGatewayExist(eval(args[0]), args[1],))
+
+elif cmd == 'createNotification':
+    if len(args) != 2:
+        print('createNotification requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.createNotification(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateNotification':
+    if len(args) != 2:
+        print('updateNotification requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.updateNotification(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'deleteNotification':
+    if len(args) != 3:
+        print('deleteNotification requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteNotification(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getNotification':
+    if len(args) != 3:
+        print('getNotification requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getNotification(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllNotifications':
+    if len(args) != 2:
+        print('getAllNotifications requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllNotifications(eval(args[0]), args[1],))
+
+elif cmd == 'generateAndRegisterSSHKeys':
+    if len(args) != 5:
+        print('generateAndRegisterSSHKeys requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.generateAndRegisterSSHKeys(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'registerPwdCredential':
+    if len(args) != 6:
+        print('registerPwdCredential requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.registerPwdCredential(eval(args[0]), args[1], args[2], args[3], args[4], args[5],))
+
+elif cmd == 'getSSHPubKey':
+    if len(args) != 3:
+        print('getSSHPubKey requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getSSHPubKey(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllGatewaySSHPubKeys':
+    if len(args) != 2:
+        print('getAllGatewaySSHPubKeys requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewaySSHPubKeys(eval(args[0]), args[1],))
+
+elif cmd == 'getAllCredentialSummaryForGateway':
+    if len(args) != 3:
+        print('getAllCredentialSummaryForGateway requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllCredentialSummaryForGateway(eval(args[0]), eval(args[1]), args[2],))
+
+elif cmd == 'getAllCredentialSummaryForUsersInGateway':
+    if len(args) != 4:
+        print('getAllCredentialSummaryForUsersInGateway requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getAllCredentialSummaryForUsersInGateway(eval(args[0]), eval(args[1]), args[2], args[3],))
+
+elif cmd == 'getAllGatewayPWDCredentials':
+    if len(args) != 2:
+        print('getAllGatewayPWDCredentials requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayPWDCredentials(eval(args[0]), args[1],))
+
+elif cmd == 'deleteSSHPubKey':
+    if len(args) != 3:
+        print('deleteSSHPubKey requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteSSHPubKey(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'deletePWDCredential':
+    if len(args) != 3:
+        print('deletePWDCredential requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deletePWDCredential(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'createProject':
+    if len(args) != 3:
+        print('createProject requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.createProject(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateProject':
+    if len(args) != 3:
+        print('updateProject requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateProject(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getProject':
+    if len(args) != 2:
+        print('getProject requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getProject(eval(args[0]), args[1],))
+
+elif cmd == 'deleteProject':
+    if len(args) != 2:
+        print('deleteProject requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteProject(eval(args[0]), args[1],))
+
+elif cmd == 'getUserProjects':
+    if len(args) != 5:
+        print('getUserProjects requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getUserProjects(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]),))
+
+elif cmd == 'searchProjects':
+    if len(args) != 6:
+        print('searchProjects requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.searchProjects(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]),))
+
+elif cmd == 'searchExperiments':
+    if len(args) != 6:
+        print('searchExperiments requires 6 args')
+        sys.exit(1)
+    pp.pprint(client.searchExperiments(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]),))
+
+elif cmd == 'getExperimentStatistics':
+    if len(args) != 7:
+        print('getExperimentStatistics requires 7 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentStatistics(eval(args[0]), args[1], eval(args[2]), eval(args[3]), args[4], args[5], args[6],))
+
+elif cmd == 'getExperimentsInProject':
+    if len(args) != 4:
+        print('getExperimentsInProject requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentsInProject(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getUserExperiments':
+    if len(args) != 5:
+        print('getUserExperiments requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.getUserExperiments(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]),))
+
+elif cmd == 'createExperiment':
+    if len(args) != 3:
+        print('createExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.createExperiment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteExperiment':
+    if len(args) != 2:
+        print('deleteExperiment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteExperiment(eval(args[0]), args[1],))
+
+elif cmd == 'getExperiment':
+    if len(args) != 2:
+        print('getExperiment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperiment(eval(args[0]), args[1],))
+
+elif cmd == 'getExperimentByAdmin':
+    if len(args) != 2:
+        print('getExperimentByAdmin requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentByAdmin(eval(args[0]), args[1],))
+
+elif cmd == 'getDetailedExperimentTree':
+    if len(args) != 2:
+        print('getDetailedExperimentTree requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getDetailedExperimentTree(eval(args[0]), args[1],))
+
+elif cmd == 'updateExperiment':
+    if len(args) != 3:
+        print('updateExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateExperiment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateExperimentConfiguration':
+    if len(args) != 3:
+        print('updateExperimentConfiguration requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateExperimentConfiguration(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateResourceScheduleing':
+    if len(args) != 3:
+        print('updateResourceScheduleing requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateResourceScheduleing(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'validateExperiment':
+    if len(args) != 2:
+        print('validateExperiment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.validateExperiment(eval(args[0]), args[1],))
+
+elif cmd == 'launchExperiment':
+    if len(args) != 3:
+        print('launchExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.launchExperiment(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getExperimentStatus':
+    if len(args) != 2:
+        print('getExperimentStatus requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentStatus(eval(args[0]), args[1],))
+
+elif cmd == 'getExperimentOutputs':
+    if len(args) != 2:
+        print('getExperimentOutputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getExperimentOutputs(eval(args[0]), args[1],))
+
+elif cmd == 'getIntermediateOutputs':
+    if len(args) != 2:
+        print('getIntermediateOutputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getIntermediateOutputs(eval(args[0]), args[1],))
+
+elif cmd == 'getJobStatuses':
+    if len(args) != 2:
+        print('getJobStatuses requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getJobStatuses(eval(args[0]), args[1],))
+
+elif cmd == 'getJobDetails':
+    if len(args) != 2:
+        print('getJobDetails requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getJobDetails(eval(args[0]), args[1],))
+
+elif cmd == 'cloneExperiment':
+    if len(args) != 4:
+        print('cloneExperiment requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.cloneExperiment(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'cloneExperimentByAdmin':
+    if len(args) != 4:
+        print('cloneExperimentByAdmin requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.cloneExperimentByAdmin(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'terminateExperiment':
+    if len(args) != 3:
+        print('terminateExperiment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.terminateExperiment(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'registerApplicationModule':
+    if len(args) != 3:
+        print('registerApplicationModule requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerApplicationModule(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getApplicationModule':
+    if len(args) != 2:
+        print('getApplicationModule requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationModule(eval(args[0]), args[1],))
+
+elif cmd == 'updateApplicationModule':
+    if len(args) != 3:
+        print('updateApplicationModule requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateApplicationModule(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getAllAppModules':
+    if len(args) != 2:
+        print('getAllAppModules requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllAppModules(eval(args[0]), args[1],))
+
+elif cmd == 'deleteApplicationModule':
+    if len(args) != 2:
+        print('deleteApplicationModule requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteApplicationModule(eval(args[0]), args[1],))
+
+elif cmd == 'registerApplicationDeployment':
+    if len(args) != 3:
+        print('registerApplicationDeployment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerApplicationDeployment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getApplicationDeployment':
+    if len(args) != 2:
+        print('getApplicationDeployment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationDeployment(eval(args[0]), args[1],))
+
+elif cmd == 'updateApplicationDeployment':
+    if len(args) != 3:
+        print('updateApplicationDeployment requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateApplicationDeployment(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteApplicationDeployment':
+    if len(args) != 2:
+        print('deleteApplicationDeployment requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteApplicationDeployment(eval(args[0]), args[1],))
+
+elif cmd == 'getAllApplicationDeployments':
+    if len(args) != 2:
+        print('getAllApplicationDeployments requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllApplicationDeployments(eval(args[0]), args[1],))
+
+elif cmd == 'getAppModuleDeployedResources':
+    if len(args) != 2:
+        print('getAppModuleDeployedResources requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAppModuleDeployedResources(eval(args[0]), args[1],))
+
+elif cmd == 'registerApplicationInterface':
+    if len(args) != 3:
+        print('registerApplicationInterface requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerApplicationInterface(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'cloneApplicationInterface':
+    if len(args) != 4:
+        print('cloneApplicationInterface requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.cloneApplicationInterface(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getApplicationInterface':
+    if len(args) != 2:
+        print('getApplicationInterface requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationInterface(eval(args[0]), args[1],))
+
+elif cmd == 'updateApplicationInterface':
+    if len(args) != 3:
+        print('updateApplicationInterface requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateApplicationInterface(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteApplicationInterface':
+    if len(args) != 2:
+        print('deleteApplicationInterface requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteApplicationInterface(eval(args[0]), args[1],))
+
+elif cmd == 'getAllApplicationInterfaceNames':
+    if len(args) != 2:
+        print('getAllApplicationInterfaceNames requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllApplicationInterfaceNames(eval(args[0]), args[1],))
+
+elif cmd == 'getAllApplicationInterfaces':
+    if len(args) != 2:
+        print('getAllApplicationInterfaces requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllApplicationInterfaces(eval(args[0]), args[1],))
+
+elif cmd == 'getApplicationInputs':
+    if len(args) != 2:
+        print('getApplicationInputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationInputs(eval(args[0]), args[1],))
+
+elif cmd == 'getApplicationOutputs':
+    if len(args) != 2:
+        print('getApplicationOutputs requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getApplicationOutputs(eval(args[0]), args[1],))
+
+elif cmd == 'getAvailableAppInterfaceComputeResources':
+    if len(args) != 2:
+        print('getAvailableAppInterfaceComputeResources requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAvailableAppInterfaceComputeResources(eval(args[0]), args[1],))
+
+elif cmd == 'registerComputeResource':
+    if len(args) != 2:
+        print('registerComputeResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerComputeResource(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getComputeResource':
+    if len(args) != 2:
+        print('getComputeResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getComputeResource(eval(args[0]), args[1],))
+
+elif cmd == 'getAllComputeResourceNames':
+    if len(args) != 1:
+        print('getAllComputeResourceNames requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllComputeResourceNames(eval(args[0]),))
+
+elif cmd == 'updateComputeResource':
+    if len(args) != 3:
+        print('updateComputeResource requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateComputeResource(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteComputeResource':
+    if len(args) != 2:
+        print('deleteComputeResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteComputeResource(eval(args[0]), args[1],))
+
+elif cmd == 'registerStorageResource':
+    if len(args) != 2:
+        print('registerStorageResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerStorageResource(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getStorageResource':
+    if len(args) != 2:
+        print('getStorageResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getStorageResource(eval(args[0]), args[1],))
+
+elif cmd == 'getAllStorageResourceNames':
+    if len(args) != 1:
+        print('getAllStorageResourceNames requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllStorageResourceNames(eval(args[0]),))
+
+elif cmd == 'updateStorageResource':
+    if len(args) != 3:
+        print('updateStorageResource requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateStorageResource(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteStorageResource':
+    if len(args) != 2:
+        print('deleteStorageResource requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteStorageResource(eval(args[0]), args[1],))
+
+elif cmd == 'addLocalSubmissionDetails':
+    if len(args) != 4:
+        print('addLocalSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addLocalSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'updateLocalSubmissionDetails':
+    if len(args) != 3:
+        print('updateLocalSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateLocalSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getLocalJobSubmission':
+    if len(args) != 2:
+        print('getLocalJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getLocalJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'addSSHJobSubmissionDetails':
+    if len(args) != 4:
+        print('addSSHJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addSSHJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'addSSHForkJobSubmissionDetails':
+    if len(args) != 4:
+        print('addSSHForkJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addSSHForkJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getSSHJobSubmission':
+    if len(args) != 2:
+        print('getSSHJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getSSHJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'addUNICOREJobSubmissionDetails':
+    if len(args) != 4:
+        print('addUNICOREJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addUNICOREJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getUnicoreJobSubmission':
+    if len(args) != 2:
+        print('getUnicoreJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getUnicoreJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'addCloudJobSubmissionDetails':
+    if len(args) != 4:
+        print('addCloudJobSubmissionDetails requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addCloudJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getCloudJobSubmission':
+    if len(args) != 2:
+        print('getCloudJobSubmission requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getCloudJobSubmission(eval(args[0]), args[1],))
+
+elif cmd == 'updateSSHJobSubmissionDetails':
+    if len(args) != 3:
+        print('updateSSHJobSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateSSHJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateCloudJobSubmissionDetails':
+    if len(args) != 3:
+        print('updateCloudJobSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateCloudJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateUnicoreJobSubmissionDetails':
+    if len(args) != 3:
+        print('updateUnicoreJobSubmissionDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateUnicoreJobSubmissionDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'addLocalDataMovementDetails':
+    if len(args) != 5:
+        print('addLocalDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addLocalDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateLocalDataMovementDetails':
+    if len(args) != 3:
+        print('updateLocalDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateLocalDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getLocalDataMovement':
+    if len(args) != 2:
+        print('getLocalDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getLocalDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'addSCPDataMovementDetails':
+    if len(args) != 5:
+        print('addSCPDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addSCPDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateSCPDataMovementDetails':
+    if len(args) != 3:
+        print('updateSCPDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateSCPDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getSCPDataMovement':
+    if len(args) != 2:
+        print('getSCPDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getSCPDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'addUnicoreDataMovementDetails':
+    if len(args) != 5:
+        print('addUnicoreDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addUnicoreDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateUnicoreDataMovementDetails':
+    if len(args) != 3:
+        print('updateUnicoreDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateUnicoreDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getUnicoreDataMovement':
+    if len(args) != 2:
+        print('getUnicoreDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getUnicoreDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'addGridFTPDataMovementDetails':
+    if len(args) != 5:
+        print('addGridFTPDataMovementDetails requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addGridFTPDataMovementDetails(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))
+
+elif cmd == 'updateGridFTPDataMovementDetails':
+    if len(args) != 3:
+        print('updateGridFTPDataMovementDetails requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateGridFTPDataMovementDetails(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getGridFTPDataMovement':
+    if len(args) != 2:
+        print('getGridFTPDataMovement requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGridFTPDataMovement(eval(args[0]), args[1],))
+
+elif cmd == 'changeJobSubmissionPriority':
+    if len(args) != 3:
+        print('changeJobSubmissionPriority requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.changeJobSubmissionPriority(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'changeDataMovementPriority':
+    if len(args) != 3:
+        print('changeDataMovementPriority requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.changeDataMovementPriority(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'changeJobSubmissionPriorities':
+    if len(args) != 2:
+        print('changeJobSubmissionPriorities requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.changeJobSubmissionPriorities(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'changeDataMovementPriorities':
+    if len(args) != 2:
+        print('changeDataMovementPriorities requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.changeDataMovementPriorities(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'deleteJobSubmissionInterface':
+    if len(args) != 3:
+        print('deleteJobSubmissionInterface requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteJobSubmissionInterface(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'deleteDataMovementInterface':
+    if len(args) != 4:
+        print('deleteDataMovementInterface requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteDataMovementInterface(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'registerResourceJobManager':
+    if len(args) != 2:
+        print('registerResourceJobManager requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerResourceJobManager(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateResourceJobManager':
+    if len(args) != 3:
+        print('updateResourceJobManager requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateResourceJobManager(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getResourceJobManager':
+    if len(args) != 2:
+        print('getResourceJobManager requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getResourceJobManager(eval(args[0]), args[1],))
+
+elif cmd == 'deleteResourceJobManager':
+    if len(args) != 2:
+        print('deleteResourceJobManager requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteResourceJobManager(eval(args[0]), args[1],))
+
+elif cmd == 'deleteBatchQueue':
+    if len(args) != 3:
+        print('deleteBatchQueue requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteBatchQueue(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'registerGatewayResourceProfile':
+    if len(args) != 2:
+        print('registerGatewayResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerGatewayResourceProfile(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getGatewayResourceProfile':
+    if len(args) != 2:
+        print('getGatewayResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayResourceProfile(eval(args[0]), args[1],))
+
+elif cmd == 'updateGatewayResourceProfile':
+    if len(args) != 3:
+        print('updateGatewayResourceProfile requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateGatewayResourceProfile(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'deleteGatewayResourceProfile':
+    if len(args) != 2:
+        print('deleteGatewayResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGatewayResourceProfile(eval(args[0]), args[1],))
+
+elif cmd == 'addGatewayComputeResourcePreference':
+    if len(args) != 4:
+        print('addGatewayComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addGatewayComputeResourcePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'addGatewayStoragePreference':
+    if len(args) != 4:
+        print('addGatewayStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.addGatewayStoragePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'getGatewayComputeResourcePreference':
+    if len(args) != 3:
+        print('getGatewayComputeResourcePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayComputeResourcePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getGatewayStoragePreference':
+    if len(args) != 3:
+        print('getGatewayStoragePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getGatewayStoragePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllGatewayComputeResourcePreferences':
+    if len(args) != 2:
+        print('getAllGatewayComputeResourcePreferences requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayComputeResourcePreferences(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGatewayStoragePreferences':
+    if len(args) != 2:
+        print('getAllGatewayStoragePreferences requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayStoragePreferences(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGatewayResourceProfiles':
+    if len(args) != 1:
+        print('getAllGatewayResourceProfiles requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGatewayResourceProfiles(eval(args[0]),))
+
+elif cmd == 'updateGatewayComputeResourcePreference':
+    if len(args) != 4:
+        print('updateGatewayComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.updateGatewayComputeResourcePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'updateGatewayStoragePreference':
+    if len(args) != 4:
+        print('updateGatewayStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.updateGatewayStoragePreference(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'deleteGatewayComputeResourcePreference':
+    if len(args) != 3:
+        print('deleteGatewayComputeResourcePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGatewayComputeResourcePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'deleteGatewayStoragePreference':
+    if len(args) != 3:
+        print('deleteGatewayStoragePreference requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGatewayStoragePreference(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'registerUserResourceProfile':
+    if len(args) != 2:
+        print('registerUserResourceProfile requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerUserResourceProfile(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getUserResourceProfile':
+    if len(args) != 3:
+        print('getUserResourceProfile requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getUserResourceProfile(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'updateUserResourceProfile':
+    if len(args) != 4:
+        print('updateUserResourceProfile requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.updateUserResourceProfile(eval(args[0]), args[1], args[2], eval(args[3]),))
+
+elif cmd == 'deleteUserResourceProfile':
+    if len(args) != 3:
+        print('deleteUserResourceProfile requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.deleteUserResourceProfile(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'addUserComputeResourcePreference':
+    if len(args) != 5:
+        print('addUserComputeResourcePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'addUserStoragePreference':
+    if len(args) != 5:
+        print('addUserStoragePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.addUserStoragePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'getUserComputeResourcePreference':
+    if len(args) != 4:
+        print('getUserComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getUserStoragePreference':
+    if len(args) != 4:
+        print('getUserStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getUserStoragePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getAllUserComputeResourcePreferences':
+    if len(args) != 3:
+        print('getAllUserComputeResourcePreferences requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUserComputeResourcePreferences(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllUserStoragePreferences':
+    if len(args) != 3:
+        print('getAllUserStoragePreferences requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUserStoragePreferences(eval(args[0]), args[1], args[2],))
+
+elif cmd == 'getAllUserResourceProfiles':
+    if len(args) != 1:
+        print('getAllUserResourceProfiles requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getAllUserResourceProfiles(eval(args[0]),))
+
+elif cmd == 'updateUserComputeResourcePreference':
+    if len(args) != 5:
+        print('updateUserComputeResourcePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.updateUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'updateUserStoragePreference':
+    if len(args) != 5:
+        print('updateUserStoragePreference requires 5 args')
+        sys.exit(1)
+    pp.pprint(client.updateUserStoragePreference(eval(args[0]), args[1], args[2], args[3], eval(args[4]),))
+
+elif cmd == 'deleteUserComputeResourcePreference':
+    if len(args) != 4:
+        print('deleteUserComputeResourcePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteUserComputeResourcePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'deleteUserStoragePreference':
+    if len(args) != 4:
+        print('deleteUserStoragePreference requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteUserStoragePreference(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getAllWorkflows':
+    if len(args) != 2:
+        print('getAllWorkflows requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getAllWorkflows(eval(args[0]), args[1],))
+
+elif cmd == 'getLatestQueueStatuses':
+    if len(args) != 1:
+        print('getLatestQueueStatuses requires 1 args')
+        sys.exit(1)
+    pp.pprint(client.getLatestQueueStatuses(eval(args[0]),))
+
+elif cmd == 'getWorkflow':
+    if len(args) != 2:
+        print('getWorkflow requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getWorkflow(eval(args[0]), args[1],))
+
+elif cmd == 'deleteWorkflow':
+    if len(args) != 2:
+        print('deleteWorkflow requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.deleteWorkflow(eval(args[0]), args[1],))
+
+elif cmd == 'registerWorkflow':
+    if len(args) != 3:
+        print('registerWorkflow requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.registerWorkflow(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'updateWorkflow':
+    if len(args) != 3:
+        print('updateWorkflow requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.updateWorkflow(eval(args[0]), args[1], eval(args[2]),))
+
+elif cmd == 'getWorkflowTemplateId':
+    if len(args) != 2:
+        print('getWorkflowTemplateId requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getWorkflowTemplateId(eval(args[0]), args[1],))
+
+elif cmd == 'isWorkflowExistWithName':
+    if len(args) != 2:
+        print('isWorkflowExistWithName requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.isWorkflowExistWithName(eval(args[0]), args[1],))
+
+elif cmd == 'registerDataProduct':
+    if len(args) != 2:
+        print('registerDataProduct requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerDataProduct(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getDataProduct':
+    if len(args) != 2:
+        print('getDataProduct requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getDataProduct(eval(args[0]), args[1],))
+
+elif cmd == 'registerReplicaLocation':
+    if len(args) != 2:
+        print('registerReplicaLocation requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.registerReplicaLocation(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'getParentDataProduct':
+    if len(args) != 2:
+        print('getParentDataProduct requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getParentDataProduct(eval(args[0]), args[1],))
+
+elif cmd == 'getChildDataProducts':
+    if len(args) != 2:
+        print('getChildDataProducts requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getChildDataProducts(eval(args[0]), args[1],))
+
+elif cmd == 'shareResourceWithUsers':
+    if len(args) != 4:
+        print('shareResourceWithUsers requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.shareResourceWithUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'revokeSharingOfResourceFromUsers':
+    if len(args) != 4:
+        print('revokeSharingOfResourceFromUsers requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.revokeSharingOfResourceFromUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'getAllAccessibleUsers':
+    if len(args) != 4:
+        print('getAllAccessibleUsers requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.getAllAccessibleUsers(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))
+
+elif cmd == 'createGroup':
+    if len(args) != 2:
+        print('createGroup requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.createGroup(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'updateGroup':
+    if len(args) != 2:
+        print('updateGroup requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.updateGroup(eval(args[0]), eval(args[1]),))
+
+elif cmd == 'deleteGroup':
+    if len(args) != 4:
+        print('deleteGroup requires 4 args')
+        sys.exit(1)
+    pp.pprint(client.deleteGroup(eval(args[0]), args[1], args[2], args[3],))
+
+elif cmd == 'getGroup':
+    if len(args) != 2:
+        print('getGroup requires 2 args')
+        sys.exit(1)
+    pp.pprint(client.getGroup(eval(args[0]), args[1],))
+
+elif cmd == 'getAllGroupsUserBelongs':
+    if len(args) != 3:
+        print('getAllGroupsUserBelongs requires 3 args')
+        sys.exit(1)
+    pp.pprint(client.getAllGroupsUserBelongs(eval(args[0]), args[1], args[2],))
+
+else:
+    print('Unrecognized method %s' % cmd)
+    sys.exit(1)
+
+transport.close()
diff --git a/cwl-workflows/apache/airavata/api/Airavata.py b/cwl-workflows/apache/airavata/api/Airavata.py
new file mode 100644 (file)
index 0000000..77fd62a
--- /dev/null
@@ -0,0 +1,52211 @@
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+import sys
+import logging
+from .ttypes import *
+from thrift.Thrift import TProcessor
+from thrift.transport import TTransport
+
+
+class Iface(object):
+    def getAPIVersion(self, authzToken):
+        """
+        Fetch Apache Airavata API version
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def isUserExists(self, authzToken, gatewayId, userName):
+        """
+        Verify if User Exists within Airavata.
+
+        @param gatewayId
+
+         @param userName
+
+        @return true/false
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+        """
+        pass
+
+    def addGateway(self, authzToken, gateway):
+        """
+        Register a Gateway with Airavata.
+
+        @param gateway
+           The gateway data model.
+
+        @return gatewayId
+          Th unique identifier of the  newly registered gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gateway
+        """
+        pass
+
+    def getAllUsersInGateway(self, authzToken, gatewayId):
+        """
+        Get all users in the gateway
+
+        @param gatewayId
+           The gateway data model.
+
+        @return users
+          list of usernames of the users in the gateway
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def updateGateway(self, authzToken, gatewayId, updatedGateway):
+        """
+        Update previously registered Gateway metadata.
+
+        @param gatewayId
+           The gateway Id of the Gateway which require an update.
+
+        @return gateway
+           Modified gateway obejct.
+
+        @exception AiravataClientException
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - updatedGateway
+        """
+        pass
+
+    def getGateway(self, authzToken, gatewayId):
+        """
+        Get Gateway details by providing gatewayId
+
+        @param gatewayId
+           The gateway Id of the Gateway.
+
+        @return gateway
+           Gateway obejct.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def deleteGateway(self, authzToken, gatewayId):
+        """
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAllGateways(self, authzToken):
+        """
+        Get All the Gateways Connected to Airavata.
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def isGatewayExist(self, authzToken, gatewayId):
+        """
+        Check for the Existance of a Gateway within Airavata
+
+        @param gatewayId
+          Provide the gatewayId of the gateway you want to check the existancy
+
+        @return boolean
+          Boolean idetifier for the existance or non-existane of the gatewayId
+
+        @return gatewayId
+          return the gatewayId of the existing gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def createNotification(self, authzToken, notification):
+        """
+          * API methods to retrieve notifications
+        *
+
+        Parameters:
+         - authzToken
+         - notification
+        """
+        pass
+
+    def updateNotification(self, authzToken, notification):
+        """
+        Parameters:
+         - authzToken
+         - notification
+        """
+        pass
+
+    def deleteNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        pass
+
+    def getNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        pass
+
+    def getAllNotifications(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName, description, credentialOwnerType):
+        """
+        Generate and Register SSH Key Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param userName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param description
+           The description field for a credential type, all type of credential can have a description.
+
+        @param credentialOwnerType
+           The type of owner of this credential. Two possible values: GATEWAY (default) and USER
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - description
+         - credentialOwnerType
+        """
+        pass
+
+    def registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+        """
+        Generate and Register Username PWD Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param portalUserName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param loginUserName
+
+        @param password
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - portalUserName
+         - loginUserName
+         - password
+         - description
+        """
+        pass
+
+    def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Get a Public Key by Providing the Token
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        pass
+
+    def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+        """
+
+        Get all Public Keys of the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAllCredentialSummaryForGateway(self, authzToken, type, gatewayId):
+        """
+
+        Get all Credential summaries for the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return List of Credential Summary Objects
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+        """
+        pass
+
+    def getAllCredentialSummaryForUsersInGateway(self, authzToken, type, gatewayId, userId):
+        """
+
+        Get all Credential summaries for user in a Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @param userId
+           This is the unique identifier of user whose public keys are to be fetched.
+
+        @return CredentialSummary
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+         - userId
+        """
+        pass
+
+    def getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        pass
+
+    def deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        pass
+
+    def createProject(self, authzToken, gatewayId, project):
+        """
+
+        Creates a Project with basic metadata.
+           A Project is a container of experiments.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param Project
+           The Project Object described in the workspace_model.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - project
+        """
+        pass
+
+    def updateProject(self, authzToken, projectId, updatedProject):
+        """
+
+        Update an Existing Project
+
+        @param projectId
+           The projectId of the project needed an update.
+
+        @return void
+           Currently this does not return any value.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - updatedProject
+        """
+        pass
+
+    def getProject(self, authzToken, projectId):
+        """
+
+        Get a Project by ID
+           This method is to obtain a project by providing a projectId.
+
+        @param projectId
+           projectId of the project you require.
+
+        @return project
+           project data model will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        pass
+
+    def deleteProject(self, authzToken, projectId):
+        """
+
+        Delete a Project
+           This method is used to delete an existing Project.
+
+        @param projectId
+           projectId of the project you want to delete.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+           NOTE: This method is not used within gateways connected with Airavata.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        pass
+
+    def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All User Projects
+        Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param userName
+           The identifier of the user.
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        pass
+
+    def searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+
+        Search User Projects
+        Search and get all Projects for user by project description or/and project name  with pagination.
+        Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The unique identifier of the gateway making the request.
+
+        @param userName
+           The identifier of the user.
+
+        @param filters
+           Map of multiple filter criteria. Currenlt search filters includes Project Name and Project Description
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        pass
+
+    def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+        Search Experiments.
+        Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requested gateway.
+
+        @param userName
+              Username of the user requesting the search function.
+
+        @param filters
+              Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+        @return ExperimentSummaryModel
+           List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        pass
+
+    def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName):
+        """
+
+        Get Experiment Statistics
+        Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
+        @param gatewayId
+              Unique identifier of the gateway making the request to fetch statistics.
+
+        @param fromTime
+              Starting date time.
+
+        @param toTime
+              Ending data time.
+
+        @param userName
+              Gateway username substring with which to further filter statistics.
+
+        @param applicationName
+              Application id substring with which to further filter statistics.
+
+        @param resourceHostName
+              Hostname id substring with which to further filter statistics.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - fromTime
+         - toTime
+         - userName
+         - applicationName
+         - resourceHostName
+        """
+        pass
+
+    def getExperimentsInProject(self, authzToken, projectId, limit, offset):
+        """
+
+        Get All Experiments of the Project
+        Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
+
+        @param projectId
+              Uniqie identifier of the project.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - limit
+         - offset
+        """
+        pass
+
+    def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All Experiments of the User
+        Get experiments by user with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requesting gateway.
+
+        @param userName
+              Username of the requested end user.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        pass
+
+    def createExperiment(self, authzToken, gatewayId, experiment):
+        """
+          *
+          * Create New Experiment
+          * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+          *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
+          *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+          *   registering the experiment in a persistent store.
+          *
+          * @param gatewayId
+          *    The unique ID of the gateway where the experiment is been created.
+          *
+          * @param ExperimentModel
+          *    The create experiment will require the basic experiment metadata like the name and description, intended user,
+          *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+          *      the ExperimentMetadata is a required field.
+          *
+          * @return
+          *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - experiment
+        """
+        pass
+
+    def deleteExperiment(self, authzToken, experimentId):
+        """
+
+        Delete an Experiment
+        If the experiment is not already launched experiment can be deleted.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you want to delete.
+
+        @return boolean
+            Identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - experimentId
+        """
+        pass
+
+    def getExperiment(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment
+          * Fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getExperimentByAdmin(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment by an admin user
+          *
+          * Used by an admin user to fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+        """
+
+        Get Complete Experiment Details
+        Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
+        tasks -> jobs information.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return ExperimentModel
+          This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+          information, special input output handling and additional quality of service parameters.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def updateExperiment(self, authzToken, airavataExperimentId, experiment):
+        """
+
+        Update a Previously Created Experiment
+        Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+        The experiment has to be launched to make it actionable by the server.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @param ExperimentModel
+           The configuration information of the experiment with application input parameters, computational resource scheduling
+             information, special input output handling and additional quality of service parameters.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - experiment
+        """
+        pass
+
+    def updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - userConfiguration
+        """
+        pass
+
+    def updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - resourceScheduling
+        """
+        pass
+
+    def validateExperiment(self, authzToken, airavataExperimentId):
+        """
+         *
+         * Validate experiment configuration.
+         * A true in general indicates, the experiment is ready to be launched.
+         *
+         * @param airavataExperimentId
+         *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
+         *
+         * @return boolean
+         *      Identifier for the success or failure of the validation operation.
+         *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Launch a Previously Created & Configured Experiment.
+        Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+        @gatewayId
+           ID of the gateway which will launch the experiment.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        pass
+
+    def getExperimentStatus(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Status
+
+        Obtain the status of an experiment by providing the Experiment Id
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you require the status.
+
+        @return ExperimentStatus
+            ExperimentStatus model with the current status will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getExperimentOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Outputs
+        This method to be used when need to obtain final outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need the outputs.
+
+        @return list
+            List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getIntermediateOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Intermediate Experiment Outputs
+        This method to be used when need to obtain intermediate outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need intermediate outputs.
+
+        @return list
+            List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getJobStatuses(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Statuses for an Experiment
+        This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need the job statuses.
+
+        @return JobStatus
+            Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def getJobDetails(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Details for all the jobs within an Experiment.
+        This method to be used when need to get the job details for one or many jobs of an Experiment.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need job details.
+
+        @return list of JobDetails
+            Job details.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        pass
+
+    def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        pass
+
+    def cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment by an admin user
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        pass
+
+    def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Terminate a running Experiment.
+
+        @gatewayId
+           ID of the gateway which will terminate the running Experiment.
+
+        @param airavataExperimentId
+           The identifier of the experiment required termination. This ID is returned during the create experiment step.
+
+        @return status
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        pass
+
+    def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+        """
+
+        Register a Application Module.
+
+        @gatewayId
+           ID of the gateway which is registering the new Application Module.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return appModuleId
+          Returns the server-side generated airavata appModule globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationModule
+        """
+        pass
+
+    def getApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Fetch a Application Module.
+
+        @param appModuleId
+          The unique identifier of the application module required
+
+        @return applicationModule
+          Returns an Application Module Object.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        pass
+
+    def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+        """
+
+        Update a Application Module.
+
+        @param appModuleId
+          The identifier for the requested application module to be updated.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+         - applicationModule
+        """
+        pass
+
+    def getAllAppModules(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Module Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list
+           Returns the list of all Application Module Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def deleteApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Delete an Application Module.
+
+        @param appModuleId
+          The identifier of the Application Module to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        pass
+
+    def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+        """
+
+        Register an Application Deployment.
+
+        @param gatewayId
+           ID of the gateway which is registering the new Application Deployment.
+
+        @param applicationDeployment
+           Application Module Object created from the datamodel.
+
+        @return appDeploymentId
+          Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationDeployment
+        """
+        pass
+
+    def getApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Fetch a Application Deployment.
+
+        @param appDeploymentId
+          The identifier for the requested application module
+
+        @return applicationDeployment
+          Returns a application Deployment Object.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        pass
+
+    def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+        """
+
+        Update an Application Deployment.
+
+        @param appDeploymentId
+          The identifier of the requested application deployment to be updated.
+
+        @param appDeployment
+           Application Deployment Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+         - applicationDeployment
+        """
+        pass
+
+    def deleteApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Delete an Application Deployment.
+
+        @param appDeploymentId
+          The unique identifier of application deployment to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        pass
+
+    def getAllApplicationDeployments(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Deployment Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list<applicationDeployment.
+           Returns the list of all application Deployment Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAppModuleDeployedResources(self, authzToken, appModuleId):
+        """
+        Fetch a list of Deployed Compute Hosts.
+
+        @param appModuleId
+          The identifier for the requested application module
+
+        @return list<string>
+          Returns a list of Deployed Resources.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        pass
+
+    def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+        """
+
+        Register a Application Interface.
+
+        @param applicationInterface
+           Application Module Object created from the datamodel.
+
+        @return appInterfaceId
+          Returns a server-side generated airavata application interface globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationInterface
+        """
+        pass
+
+    def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+        """
+
+        Clone an Application Interface.
+
+        @gatewayId
+           The identifier for the gateway profile to be requested
+
+        @param existingAppInterfaceID
+           Identifier of the existing Application interface you wich to clone.
+
+        @param newApplicationName
+           Name for the new application interface.
+
+        @return appInterfaceId
+           Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
+        Parameters:
+         - authzToken
+         - existingAppInterfaceID
+         - newApplicationName
+         - gatewayId
+        """
+        pass
+
+    def getApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Fetch an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return applicationInterface
+          Returns an application Interface Object.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+        """
+
+        Update a Application Interface.
+
+        @param appInterfaceId
+          The identifier of the requested application deployment to be updated.
+
+        @param appInterface
+           Application Interface Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+         - applicationInterface
+        """
+        pass
+
+    def deleteApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Delete an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+        """
+
+        Fetch name and ID of  Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces with corresponsing ID's
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getAllApplicationInterfaces(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getApplicationInputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch the list of Application Inputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need inputs to be fetched.
+
+        @return list<application_interface_model.InputDataObjectType>
+          Returns a list of application inputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def getApplicationOutputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch list of Application Outputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need outputs to be fetched.
+
+        @return list<application_interface_model.OutputDataObjectType>
+          Returns a list of application outputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+        """
+
+        Fetch a list of all deployed Compute Hosts for a given application interfaces.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return map<computeResourceId, computeResourceName>
+          A map of registered compute resource id's and their corresponding hostnames.
+          Deployments of each modules listed within the interfaces will be listed.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        pass
+
+    def registerComputeResource(self, authzToken, computeResourceDescription):
+        """
+        Register a Compute Resource.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return computeResourceId
+          Returns a server-side generated airavata compute resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceDescription
+        """
+        pass
+
+    def getComputeResource(self, authzToken, computeResourceId):
+        """
+        Fetch the given Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource
+
+        @return computeResourceDescription
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+        """
+        pass
+
+    def getAllComputeResourceNames(self, authzToken):
+        """
+
+        Fetch all registered Compute Resources.
+
+        @return A map of registered compute resource id's and thier corresponding hostnames.
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateComputeResource(self, authzToken, computeResourceId, computeResourceDescription):
+        """
+        Update a Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource to be updated.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - computeResourceDescription
+        """
+        pass
+
+    def deleteComputeResource(self, authzToken, computeResourceId):
+        """
+        Delete a Compute Resource.
+
+        @param computeResourceId
+          The identifier for the requested compute resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+        """
+        pass
+
+    def registerStorageResource(self, authzToken, storageResourceDescription):
+        """
+        Register a Storage Resource.
+
+        @param storageResourceDescription
+           Storge Resource Object created from the datamodel.
+
+        @return storageResourceId
+          Returns a server-side generated airavata storage resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceDescription
+        """
+        pass
+
+    def getStorageResource(self, authzToken, storageResourceId):
+        """
+        Fetch the given Storage Resource.
+
+        @param storageResourceId
+          The identifier for the requested storage resource
+
+        @return storageResourceDescription
+           Storage Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+        """
+        pass
+
+    def getAllStorageResourceNames(self, authzToken):
+        """
+        Fetch all registered Storage Resources.
+
+        @return A map of registered compute resource id's and thier corresponding hostnames.
+           Compute Resource Object created from the datamodel..
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
+        """
+        Update a Storage Resource.
+
+        @param storageResourceId
+          The identifier for the requested compute resource to be updated.
+
+        @param storageResourceDescription
+           Storage Resource Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+         - storageResourceDescription
+        """
+        pass
+
+    def deleteStorageResource(self, authzToken, storageResourceId):
+        """
+        Delete a Storage Resource.
+
+        @param storageResourceId
+          The identifier of the requested compute resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - storageResourceId
+        """
+        pass
+
+    def addLocalSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, localSubmission):
+        """
+        Add a Local Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param localSubmission
+          The LOCALSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - localSubmission
+        """
+        pass
+
+    def updateLocalSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, localSubmission):
+        """
+        Update the given Local Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param localSubmission
+          The LOCALSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - localSubmission
+        """
+        pass
+
+    def getLocalJobSubmission(self, authzToken, jobSubmissionId):
+        """
+        This method returns localJobSubmission object
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be retrieved.
+         @return LOCALSubmission instance
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def addSSHJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        """
+        Add a SSH Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - sshJobSubmission
+        """
+        pass
+
+    def addSSHForkJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+        """
+        Add a SSH_FORK Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - sshJobSubmission
+        """
+        pass
+
+    def getSSHJobSubmission(self, authzToken, jobSubmissionId):
+        """
+        This method returns SSHJobSubmission object
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be retrieved.
+         @return SSHJobSubmission instance
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
+        """
+
+        Add a UNICORE Job Submission details to a compute resource
+         App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+        @param computeResourceId
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param unicoreJobSubmission
+          The UnicoreJobSubmission object to be added to the resource.
+
+        @return status
+         Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - unicoreJobSubmission
+        """
+        pass
+
+    def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
+        """
+          *
+          * This method returns UnicoreJobSubmission object
+          *
+          * @param jobSubmissionInterfaceId
+          *   The identifier of the JobSubmission Interface to be retrieved.
+          *  @return UnicoreJobSubmission instance
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
+        """
+           *
+           * Add a Cloud Job Submission details to a compute resource
+           *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+           *
+           * @param computeResourceId
+           *   The identifier of the compute resource to which JobSubmission protocol to be added
+           *
+           * @param priorityOrder
+           *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+           *
+           * @param sshJobSubmission
+           *   The SSHJobSubmission object to be added to the resource.
+           *
+           * @return status
+           *   Returns the unique job submission id.
+           *
+        *
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - priorityOrder
+         - cloudSubmission
+        """
+        pass
+
+    def getCloudJobSubmission(self, authzToken, jobSubmissionId):
+        """
+           *
+           * This method returns cloudJobSubmission object
+           * @param jobSubmissionInterfaceI
+               *   The identifier of the JobSubmission Interface to be retrieved.
+           *  @return CloudJobSubmission instance
+        *
+
+        Parameters:
+         - authzToken
+         - jobSubmissionId
+        """
+        pass
+
+    def updateSSHJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+        """
+
+        Update the given SSH Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param sshJobSubmission
+          The SSHJobSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - sshJobSubmission
+        """
+        pass
+
+    def updateCloudJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+        """
+
+        Update the cloud Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param cloudJobSubmission
+          The CloudJobSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - sshJobSubmission
+        """
+        pass
+
+    def updateUnicoreJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, unicoreJobSubmission):
+        """
+
+        Update the UNIOCRE Job Submission details
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be updated.
+
+        @param UnicoreJobSubmission
+          The UnicoreJobSubmission object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - unicoreJobSubmission
+        """
+        pass
+
+    def addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
+        """
+
+        Add a Local data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param DMType
+          DMType object to be added to the resource.
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param localDataMovement
+          The LOCALDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - localDataMovement
+        """
+        pass
+
+    def updateLocalDataMovementDetails(self, authzToken, dataMovementInterfaceId, localDataMovement):
+        """
+
+        Update the given Local data movement details
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param localDataMovement
+          The LOCALDataMovement object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - localDataMovement
+        """
+        pass
+
+    def getLocalDataMovement(self, authzToken, dataMovementId):
+        """
+
+        This method returns local datamovement object.
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+         @return LOCALDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
+        """
+
+        Add a SCP data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which JobSubmission protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param scpDataMovement
+          The SCPDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique job submission id.
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - scpDataMovement
+        """
+        pass
+
+    def updateSCPDataMovementDetails(self, authzToken, dataMovementInterfaceId, scpDataMovement):
+        """
+
+        Update the given scp data movement details
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param scpDataMovement
+          The SCPDataMovement object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - scpDataMovement
+        """
+        pass
+
+    def getSCPDataMovement(self, authzToken, dataMovementId):
+        """
+        This method returns SCP datamovement object
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+        @return SCPDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
+        """
+
+        Add a UNICORE data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which data movement protocol to be added
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param UnicoreDataMovement
+          The UnicoreDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique data movement id.
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - unicoreDataMovement
+        """
+        pass
+
+    def updateUnicoreDataMovementDetails(self, authzToken, dataMovementInterfaceId, unicoreDataMovement):
+        """
+
+        Update a selected UNICORE data movement details
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param UnicoreDataMovement
+          The UnicoreDataMovement object to be updated.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - unicoreDataMovement
+        """
+        pass
+
+    def getUnicoreDataMovement(self, authzToken, dataMovementId):
+        """
+
+        This method returns UNICORE datamovement object
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+        @return UnicoreDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
+        """
+
+        Add a GridFTP data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param productUri
+          The identifier of the compute resource to which dataMovement protocol to be added
+
+        @param DMType
+           The DMType object to be added to the resource.
+
+        @param priorityOrder
+          Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+        @param gridFTPDataMovement
+          The GridFTPDataMovement object to be added to the resource.
+
+        @return status
+          Returns the unique data movement id.
+
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMoveType
+         - priorityOrder
+         - gridFTPDataMovement
+        """
+        pass
+
+    def updateGridFTPDataMovementDetails(self, authzToken, dataMovementInterfaceId, gridFTPDataMovement):
+        """
+        Update the given GridFTP data movement details to a compute resource
+         App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+        @param dataMovementInterfaceId
+          The identifier of the data movement Interface to be updated.
+
+        @param gridFTPDataMovement
+          The GridFTPDataMovement object to be updated.
+
+        @return boolean
+          Returns a success/failure of the update.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - gridFTPDataMovement
+        """
+        pass
+
+    def getGridFTPDataMovement(self, authzToken, dataMovementId):
+        """
+        This method returns GridFTP datamovement object
+
+        @param dataMovementId
+          The identifier of the datamovement Interface to be retrieved.
+
+         @return GridFTPDataMovement instance
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementId
+        """
+        pass
+
+    def changeJobSubmissionPriority(self, authzToken, jobSubmissionInterfaceId, newPriorityOrder):
+        """
+        Change the priority of a given job submisison interface
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be changed
+
+        @param priorityOrder
+          The new priority of the job manager interface.
+
+        @return status
+          Returns a success/failure of the change.
+
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionInterfaceId
+         - newPriorityOrder
+        """
+        pass
+
+    def changeDataMovementPriority(self, authzToken, dataMovementInterfaceId, newPriorityOrder):
+        """
+        Change the priority of a given data movement interface
+
+        @param dataMovementInterfaceId
+          The identifier of the DataMovement Interface to be changed
+
+        @param priorityOrder
+          The new priority of the data movement interface.
+
+        @return status
+          Returns a success/failure of the change.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementInterfaceId
+         - newPriorityOrder
+        """
+        pass
+
+    def changeJobSubmissionPriorities(self, authzToken, jobSubmissionPriorityMap):
+        """
+        Change the priorities of a given set of job submission interfaces
+
+        @param jobSubmissionPriorityMap
+          A Map of identifiers of the JobSubmission Interfaces and thier associated priorities to be set.
+
+        @return status
+          Returns a success/failure of the changes.
+
+
+        Parameters:
+         - authzToken
+         - jobSubmissionPriorityMap
+        """
+        pass
+
+    def changeDataMovementPriorities(self, authzToken, dataMovementPriorityMap):
+        """
+        Change the priorities of a given set of data movement interfaces
+
+        @param dataMovementPriorityMap
+          A Map of identifiers of the DataMovement Interfaces and thier associated priorities to be set.
+
+        @return status
+          Returns a success/failure of the changes.
+
+
+
+        Parameters:
+         - authzToken
+         - dataMovementPriorityMap
+        """
+        pass
+
+    def deleteJobSubmissionInterface(self, authzToken, computeResourceId, jobSubmissionInterfaceId):
+        """
+        Delete a given job submisison interface
+
+        @param jobSubmissionInterfaceId
+          The identifier of the JobSubmission Interface to be changed
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - jobSubmissionInterfaceId
+        """
+        pass
+
+    def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
+        """
+        Delete a given data movement interface
+
+        @param dataMovementInterfaceId
+          The identifier of the DataMovement Interface to be changed
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+
+        Parameters:
+         - authzToken
+         - productUri
+         - dataMovementInterfaceId
+         - dataMoveType
+        """
+        pass
+
+    def registerResourceJobManager(self, authzToken, resourceJobManager):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManager
+        """
+        pass
+
+    def updateResourceJobManager(self, authzToken, resourceJobManagerId, updatedResourceJobManager):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManagerId
+         - updatedResourceJobManager
+        """
+        pass
+
+    def getResourceJobManager(self, authzToken, resourceJobManagerId):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManagerId
+        """
+        pass
+
+    def deleteResourceJobManager(self, authzToken, resourceJobManagerId):
+        """
+        Parameters:
+         - authzToken
+         - resourceJobManagerId
+        """
+        pass
+
+    def deleteBatchQueue(self, authzToken, computeResourceId, queueName):
+        """
+        Delete a Compute Resource Queue
+
+        @param computeResourceId
+          The identifier of the compute resource which has the queue to be deleted
+
+        @param queueName
+          Name of the queue need to be deleted. Name is the uniqueue identifier for the queue within a compute resource
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+
+        Parameters:
+         - authzToken
+         - computeResourceId
+         - queueName
+        """
+        pass
+
+    def registerGatewayResourceProfile(self, authzToken, gatewayResourceProfile):
+        """
+        Register a Gateway Resource Profile.
+
+        @param gatewayResourceProfile
+           Gateway Resource Profile Object.
+           The GatewayID should be obtained from Airavata gateway registration and passed to register a corresponding
+             resource profile.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - gatewayResourceProfile
+        """
+        pass
+
+    def getGatewayResourceProfile(self, authzToken, gatewayID):
+        """
+        Fetch the given Gateway Resource Profile.
+
+        @param gatewayID
+          The identifier for the requested gateway resource.
+
+        @return gatewayResourceProfile
+           Gateway Resource Profile Object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def updateGatewayResourceProfile(self, authzToken, gatewayID, gatewayResourceProfile):
+        """
+        Update a Gateway Resource Profile.
+
+        @param gatewayID
+          The identifier for the requested gateway resource to be updated.
+
+        @param gatewayResourceProfile
+           Gateway Resource Profile Object.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - gatewayResourceProfile
+        """
+        pass
+
+    def deleteGatewayResourceProfile(self, authzToken, gatewayID):
+        """
+        Delete the given Gateway Resource Profile.
+
+        @param gatewayID
+          The identifier for the requested gateway resource to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def addGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+        """
+        Add a Compute Resource Preference to a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be added.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+         - computeResourcePreference
+        """
+        pass
+
+    def addGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId, storagePreference):
+        """
+        Add a Storage Resource Preference to a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to be added.
+
+        @param storageResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageResourceId
+         - storagePreference
+        """
+        pass
+
+    def getGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+        """
+
+        Fetch a Compute Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+        """
+        pass
+
+    def getGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId):
+        """
+
+        Fetch a Storage Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to request to fetch the particular storage resource preference.
+
+        @param storageResourceId
+          Identifier of the Stprage Preference required to be fetched.
+
+        @return StoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageResourceId
+        """
+        pass
+
+    def getAllGatewayComputeResourcePreferences(self, authzToken, gatewayID):
+        """
+
+        Fetch all Compute Resource Preferences of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def getAllGatewayStoragePreferences(self, authzToken, gatewayID):
+        """
+        Fetch all Storage Resource Preferences of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return StoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+        """
+        pass
+
+    def getAllGatewayResourceProfiles(self, authzToken):
+        """
+
+        Fetch all Gateway Profiles registered
+
+        @return GatewayResourceProfile
+          Returns all the GatewayResourcePrifle list object.
+
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+        """
+        Update a Compute Resource Preference to a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be updated.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+         - computeResourcePreference
+        """
+        pass
+
+    def updateGatewayStoragePreference(self, authzToken, gatewayID, storageId, storagePreference):
+        """
+        Update a Storage Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to be updated.
+
+        @param storageId
+          The Storage resource identifier of the one that you want to update
+
+        @param storagePreference
+          The storagePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageId
+         - storagePreference
+        """
+        pass
+
+    def deleteGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+        """
+        Delete the Compute Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier for the gateway profile to be deleted.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - computeResourceId
+        """
+        pass
+
+    def deleteGatewayStoragePreference(self, authzToken, gatewayID, storageId):
+        """
+        Delete the Storage Resource Preference of a registered gateway profile.
+
+        @param gatewayID
+          The identifier of the gateway profile to be deleted.
+
+        @param storageId
+          ID of the storage preference you want to delete.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - gatewayID
+         - storageId
+        """
+        pass
+
+    def registerUserResourceProfile(self, authzToken, userResourceProfile):
+        """
+        Register User Resource Profile.
+
+        @param UserResourceProfile
+           User Resource Profile Object.
+           The userId should be obtained from Airavata user profile data model and passed to register a corresponding
+             resource profile.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - userResourceProfile
+        """
+        pass
+
+    def getUserResourceProfile(self, authzToken, userId, gatewayID):
+        """
+        Fetch the given User Resource Profile.
+
+        @param userId
+          The identifier for the requested user resource profile.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @return UserResourceProfile
+           User Resource Profile Object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def updateUserResourceProfile(self, authzToken, userId, gatewayID, userResourceProfile):
+        """
+        Update a User Resource Profile.
+
+        @param userId
+          The identifier for the requested user resource to be updated.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param UserResourceProfile
+           User Resource Profile Object.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userResourceProfile
+        """
+        pass
+
+    def deleteUserResourceProfile(self, authzToken, userId, gatewayID):
+        """
+        Delete the given User Resource Profile.
+
+        @param userId
+          The identifier for the requested user resource to be deleted.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def addUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId, userComputeResourcePreference):
+        """
+        Add a Compute Resource Preference to a registered User profile.
+
+        @param userId
+          The identifier for the User resource profile to be added.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param computeResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+         - userComputeResourcePreference
+        """
+        pass
+
+    def addUserStoragePreference(self, authzToken, userId, gatewayID, userStorageResourceId, userStoragePreference):
+        """
+        Add a Storage Resource Preference to a registered user resource profile.
+
+        @param userId
+          The identifier of the user resource profile to be added.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param storageResourceId
+          Preferences related to a particular compute resource
+
+        @param computeResourcePreference
+          The ComputeResourcePreference object to be added to the resource profile.
+
+        @return status
+          Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+           Instead an update should be used.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageResourceId
+         - userStoragePreference
+        """
+        pass
+
+    def getUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId):
+        """
+
+        Fetch a Compute Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier for the user profile to be requested
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userComputeResourceId
+          Preferences related to a particular compute resource
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+        """
+        pass
+
+    def getUserStoragePreference(self, authzToken, userId, gatewayID, userStorageResourceId):
+        """
+
+        Fetch a Storage Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier of the user resource profile to request to fetch the particular storage resource preference.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userStorageResourceId
+          Identifier of the Stprage Preference required to be fetched.
+
+        @return UserStoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageResourceId
+        """
+        pass
+
+    def getAllUserComputeResourcePreferences(self, authzToken, userId, gatewayID):
+        """
+
+        Fetch all Compute Resource Preferences of a registered gateway profile.
+
+        @param userId
+          The identifier of the user resource profile to request to fetch the particular storage resource preference.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return computeResourcePreference
+          Returns the ComputeResourcePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def getAllUserStoragePreferences(self, authzToken, userId, gatewayID):
+        """
+        Fetch all User Storage Resource Preferences of a registered user profile.
+
+        @param userId
+          The identifier of the user resource profile to request to fetch the particular storage resource preference.
+
+        @param gatewayID
+          The identifier for the gateway profile to be requested
+
+        @return StoragePreference
+          Returns the StoragePreference object.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+        """
+        pass
+
+    def getAllUserResourceProfiles(self, authzToken):
+        """
+
+        Fetch all user resources Profiles registered
+
+        @return UserResourceProfile
+          Returns all the UserResourcePrifle list object.
+
+
+
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def updateUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId, userComputeResourcePreference):
+        """
+        Update a Compute Resource Preference to a registered user resource profile.
+
+        @param userId
+          The identifier for the user profile to be updated.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userComputeResourceId
+          Preferences related to a particular compute resource
+
+        @param userComputeResourcePreference
+          The ComputeResourcePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+         - userComputeResourcePreference
+        """
+        pass
+
+    def updateUserStoragePreference(self, authzToken, userId, gatewayID, userStorageId, userStoragePreference):
+        """
+        Update a Storage Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier of the user resource profile to be updated.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userStorageId
+          The Storage resource identifier of the one that you want to update
+
+        @param userStoragePreference
+          The storagePreference object to be updated to the resource profile.
+
+        @return status
+          Returns a success/failure of the updation.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageId
+         - userStoragePreference
+        """
+        pass
+
+    def deleteUserComputeResourcePreference(self, authzToken, userId, gatewayID, userComputeResourceId):
+        """
+        Delete the Compute Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier for the user resource profile to be deleted.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userComputeResourceId
+          Preferences related to a particular compute resource
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userComputeResourceId
+        """
+        pass
+
+    def deleteUserStoragePreference(self, authzToken, userId, gatewayID, userStorageId):
+        """
+        Delete the Storage Resource Preference of a registered user resource profile.
+
+        @param userId
+          The identifier of the user profile to be deleted.
+
+        @param gatewayID
+          The identifier to link a gateway for the requested user resource profile.
+
+        @param userStorageId
+          ID of the storage preference you want to delete.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - userId
+         - gatewayID
+         - userStorageId
+        """
+        pass
+
+    def getAllWorkflows(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        pass
+
+    def getLatestQueueStatuses(self, authzToken):
+        """
+        Parameters:
+         - authzToken
+        """
+        pass
+
+    def getWorkflow(self, authzToken, workflowTemplateId):
+        """
+
+        API Methods Related for Work-Flow Submission Features.
+
+
+        Parameters:
+         - authzToken
+         - workflowTemplateId
+        """
+        pass
+
+    def deleteWorkflow(self, authzToken, workflowTemplateId):
+        """
+        Parameters:
+         - authzToken
+         - workflowTemplateId
+        """
+        pass
+
+    def registerWorkflow(self, authzToken, gatewayId, workflow):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - workflow
+        """
+        pass
+
+    def updateWorkflow(self, authzToken, workflowTemplateId, workflow):
+        """
+        Parameters:
+         - authzToken
+         - workflowTemplateId
+         - workflow
+        """
+        pass
+
+    def getWorkflowTemplateId(self, authzToken, workflowName):
+        """
+        Parameters:
+         - authzToken
+         - workflowName
+        """
+        pass
+
+    def isWorkflowExistWithName(self, authzToken, workflowName):
+        """
+        Parameters:
+         - authzToken
+         - workflowName
+        """
+        pass
+
+    def registerDataProduct(self, authzToken, dataProductModel):
+        """
+        API Methods related to replica catalog
+
+
+        Parameters:
+         - authzToken
+         - dataProductModel
+        """
+        pass
+
+    def getDataProduct(self, authzToken, dataProductUri):
+        """
+        Parameters:
+         - authzToken
+         - dataProductUri
+        """
+        pass
+
+    def registerReplicaLocation(self, authzToken, replicaLocationModel):
+        """
+        Parameters:
+         - authzToken
+         - replicaLocationModel
+        """
+        pass
+
+    def getParentDataProduct(self, authzToken, productUri):
+        """
+        Parameters:
+         - authzToken
+         - productUri
+        """
+        pass
+
+    def getChildDataProducts(self, authzToken, productUri):
+        """
+        Parameters:
+         - authzToken
+         - productUri
+        """
+        pass
+
+    def shareResourceWithUsers(self, authzToken, resourceId, resourceType, userPermissionList):
+        """
+        Group Manager and Data Sharing Related API methods
+
+
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - userPermissionList
+        """
+        pass
+
+    def revokeSharingOfResourceFromUsers(self, authzToken, resourceId, resourceType, userPermissionList):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - userPermissionList
+        """
+        pass
+
+    def getAllAccessibleUsers(self, authzToken, resourceId, resourceType, permissionType):
+        """
+        Parameters:
+         - authzToken
+         - resourceId
+         - resourceType
+         - permissionType
+        """
+        pass
+
+    def createGroup(self, authzToken, groupModel):
+        """
+        Parameters:
+         - authzToken
+         - groupModel
+        """
+        pass
+
+    def updateGroup(self, authzToken, groupModel):
+        """
+        Parameters:
+         - authzToken
+         - groupModel
+        """
+        pass
+
+    def deleteGroup(self, authzToken, groupId, ownerId, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - groupId
+         - ownerId
+         - gatewayId
+        """
+        pass
+
+    def getGroup(self, authzToken, groupId):
+        """
+        Parameters:
+         - authzToken
+         - groupId
+        """
+        pass
+
+    def getAllGroupsUserBelongs(self, authzToken, userName, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - userName
+         - gatewayId
+        """
+        pass
+
+
+class Client(Iface):
+    def __init__(self, iprot, oprot=None):
+        self._iprot = self._oprot = iprot
+        if oprot is not None:
+            self._oprot = oprot
+        self._seqid = 0
+
+    def getAPIVersion(self, authzToken):
+        """
+        Fetch Apache Airavata API version
+
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getAPIVersion(authzToken)
+        return self.recv_getAPIVersion()
+
+    def send_getAPIVersion(self, authzToken):
+        self._oprot.writeMessageBegin('getAPIVersion', TMessageType.CALL, self._seqid)
+        args = getAPIVersion_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAPIVersion(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAPIVersion_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, "getAPIVersion failed: unknown result")
+
+    def isUserExists(self, authzToken, gatewayId, userName):
+        """
+        Verify if User Exists within Airavata.
+
+        @param gatewayId
+
+         @param userName
+
+        @return true/false
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+        """
+        self.send_isUserExists(authzToken, gatewayId, userName)
+        return self.recv_isUserExists()
+
+    def send_isUserExists(self, authzToken, gatewayId, userName):
+        self._oprot.writeMessageBegin('isUserExists', TMessageType.CALL, self._seqid)
+        args = isUserExists_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_isUserExists(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = isUserExists_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, "isUserExists failed: unknown result")
+
+    def addGateway(self, authzToken, gateway):
+        """
+        Register a Gateway with Airavata.
+
+        @param gateway
+           The gateway data model.
+
+        @return gatewayId
+          Th unique identifier of the  newly registered gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gateway
+        """
+        self.send_addGateway(authzToken, gateway)
+        return self.recv_addGateway()
+
+    def send_addGateway(self, authzToken, gateway):
+        self._oprot.writeMessageBegin('addGateway', TMessageType.CALL, self._seqid)
+        args = addGateway_args()
+        args.authzToken = authzToken
+        args.gateway = gateway
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_addGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = addGateway_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, "addGateway failed: unknown result")
+
+    def getAllUsersInGateway(self, authzToken, gatewayId):
+        """
+        Get all users in the gateway
+
+        @param gatewayId
+           The gateway data model.
+
+        @return users
+          list of usernames of the users in the gateway
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllUsersInGateway(authzToken, gatewayId)
+        return self.recv_getAllUsersInGateway()
+
+    def send_getAllUsersInGateway(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllUsersInGateway', TMessageType.CALL, self._seqid)
+        args = getAllUsersInGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllUsersInGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllUsersInGateway_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, "getAllUsersInGateway failed: unknown result")
+
+    def updateGateway(self, authzToken, gatewayId, updatedGateway):
+        """
+        Update previously registered Gateway metadata.
+
+        @param gatewayId
+           The gateway Id of the Gateway which require an update.
+
+        @return gateway
+           Modified gateway obejct.
+
+        @exception AiravataClientException
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - updatedGateway
+        """
+        self.send_updateGateway(authzToken, gatewayId, updatedGateway)
+        return self.recv_updateGateway()
+
+    def send_updateGateway(self, authzToken, gatewayId, updatedGateway):
+        self._oprot.writeMessageBegin('updateGateway', TMessageType.CALL, self._seqid)
+        args = updateGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.updatedGateway = updatedGateway
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateGateway_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, "updateGateway failed: unknown result")
+
+    def getGateway(self, authzToken, gatewayId):
+        """
+        Get Gateway details by providing gatewayId
+
+        @param gatewayId
+           The gateway Id of the Gateway.
+
+        @return gateway
+           Gateway obejct.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getGateway(authzToken, gatewayId)
+        return self.recv_getGateway()
+
+    def send_getGateway(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getGateway', TMessageType.CALL, self._seqid)
+        args = getGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getGateway_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, "getGateway failed: unknown result")
+
+    def deleteGateway(self, authzToken, gatewayId):
+        """
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_deleteGateway(authzToken, gatewayId)
+        return self.recv_deleteGateway()
+
+    def send_deleteGateway(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('deleteGateway', TMessageType.CALL, self._seqid)
+        args = deleteGateway_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteGateway_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, "deleteGateway failed: unknown result")
+
+    def getAllGateways(self, authzToken):
+        """
+        Get All the Gateways Connected to Airavata.
+
+
+        Parameters:
+         - authzToken
+        """
+        self.send_getAllGateways(authzToken)
+        return self.recv_getAllGateways()
+
+    def send_getAllGateways(self, authzToken):
+        self._oprot.writeMessageBegin('getAllGateways', TMessageType.CALL, self._seqid)
+        args = getAllGateways_args()
+        args.authzToken = authzToken
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllGateways(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllGateways_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, "getAllGateways failed: unknown result")
+
+    def isGatewayExist(self, authzToken, gatewayId):
+        """
+        Check for the Existance of a Gateway within Airavata
+
+        @param gatewayId
+          Provide the gatewayId of the gateway you want to check the existancy
+
+        @return boolean
+          Boolean idetifier for the existance or non-existane of the gatewayId
+
+        @return gatewayId
+          return the gatewayId of the existing gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_isGatewayExist(authzToken, gatewayId)
+        return self.recv_isGatewayExist()
+
+    def send_isGatewayExist(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('isGatewayExist', TMessageType.CALL, self._seqid)
+        args = isGatewayExist_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_isGatewayExist(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = isGatewayExist_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, "isGatewayExist failed: unknown result")
+
+    def createNotification(self, authzToken, notification):
+        """
+          * API methods to retrieve notifications
+        *
+
+        Parameters:
+         - authzToken
+         - notification
+        """
+        self.send_createNotification(authzToken, notification)
+        return self.recv_createNotification()
+
+    def send_createNotification(self, authzToken, notification):
+        self._oprot.writeMessageBegin('createNotification', TMessageType.CALL, self._seqid)
+        args = createNotification_args()
+        args.authzToken = authzToken
+        args.notification = notification
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createNotification_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, "createNotification failed: unknown result")
+
+    def updateNotification(self, authzToken, notification):
+        """
+        Parameters:
+         - authzToken
+         - notification
+        """
+        self.send_updateNotification(authzToken, notification)
+        return self.recv_updateNotification()
+
+    def send_updateNotification(self, authzToken, notification):
+        self._oprot.writeMessageBegin('updateNotification', TMessageType.CALL, self._seqid)
+        args = updateNotification_args()
+        args.authzToken = authzToken
+        args.notification = notification
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateNotification_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, "updateNotification failed: unknown result")
+
+    def deleteNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        self.send_deleteNotification(authzToken, gatewayId, notificationId)
+        return self.recv_deleteNotification()
+
+    def send_deleteNotification(self, authzToken, gatewayId, notificationId):
+        self._oprot.writeMessageBegin('deleteNotification', TMessageType.CALL, self._seqid)
+        args = deleteNotification_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.notificationId = notificationId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteNotification_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, "deleteNotification failed: unknown result")
+
+    def getNotification(self, authzToken, gatewayId, notificationId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+         - notificationId
+        """
+        self.send_getNotification(authzToken, gatewayId, notificationId)
+        return self.recv_getNotification()
+
+    def send_getNotification(self, authzToken, gatewayId, notificationId):
+        self._oprot.writeMessageBegin('getNotification', TMessageType.CALL, self._seqid)
+        args = getNotification_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.notificationId = notificationId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getNotification(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getNotification_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, "getNotification failed: unknown result")
+
+    def getAllNotifications(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllNotifications(authzToken, gatewayId)
+        return self.recv_getAllNotifications()
+
+    def send_getAllNotifications(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllNotifications', TMessageType.CALL, self._seqid)
+        args = getAllNotifications_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllNotifications(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllNotifications_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, "getAllNotifications failed: unknown result")
+
+    def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName, description, credentialOwnerType):
+        """
+        Generate and Register SSH Key Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param userName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param description
+           The description field for a credential type, all type of credential can have a description.
+
+        @param credentialOwnerType
+           The type of owner of this credential. Two possible values: GATEWAY (default) and USER
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - description
+         - credentialOwnerType
+        """
+        self.send_generateAndRegisterSSHKeys(authzToken, gatewayId, userName, description, credentialOwnerType)
+        return self.recv_generateAndRegisterSSHKeys()
+
+    def send_generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName, description, credentialOwnerType):
+        self._oprot.writeMessageBegin('generateAndRegisterSSHKeys', TMessageType.CALL, self._seqid)
+        args = generateAndRegisterSSHKeys_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.description = description
+        args.credentialOwnerType = credentialOwnerType
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_generateAndRegisterSSHKeys(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = generateAndRegisterSSHKeys_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "generateAndRegisterSSHKeys failed: unknown result")
+
+    def registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+        """
+        Generate and Register Username PWD Pair with Airavata Credential Store.
+
+        @param gatewayId
+           The identifier for the requested Gateway.
+
+        @param portalUserName
+           The User for which the credential should be registered. For community accounts, this user is the name of the
+           community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+        @param loginUserName
+
+        @param password
+
+        @return airavataCredStoreToken
+          An SSH Key pair is generated and stored in the credential store and associated with users or community account
+          belonging to a Gateway.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - portalUserName
+         - loginUserName
+         - password
+         - description
+        """
+        self.send_registerPwdCredential(authzToken, gatewayId, portalUserName, loginUserName, password, description)
+        return self.recv_registerPwdCredential()
+
+    def send_registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+        self._oprot.writeMessageBegin('registerPwdCredential', TMessageType.CALL, self._seqid)
+        args = registerPwdCredential_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.portalUserName = portalUserName
+        args.loginUserName = loginUserName
+        args.password = password
+        args.description = description
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerPwdCredential(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerPwdCredential_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "registerPwdCredential failed: unknown result")
+
+    def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Get a Public Key by Providing the Token
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        self.send_getSSHPubKey(authzToken, airavataCredStoreToken, gatewayId)
+        return self.recv_getSSHPubKey()
+
+    def send_getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        self._oprot.writeMessageBegin('getSSHPubKey', TMessageType.CALL, self._seqid)
+        args = getSSHPubKey_args()
+        args.authzToken = authzToken
+        args.airavataCredStoreToken = airavataCredStoreToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getSSHPubKey(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getSSHPubKey_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getSSHPubKey failed: unknown result")
+
+    def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+        """
+
+        Get all Public Keys of the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return publicKey
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllGatewaySSHPubKeys(authzToken, gatewayId)
+        return self.recv_getAllGatewaySSHPubKeys()
+
+    def send_getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllGatewaySSHPubKeys', TMessageType.CALL, self._seqid)
+        args = getAllGatewaySSHPubKeys_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllGatewaySSHPubKeys(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllGatewaySSHPubKeys_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllGatewaySSHPubKeys failed: unknown result")
+
+    def getAllCredentialSummaryForGateway(self, authzToken, type, gatewayId):
+        """
+
+        Get all Credential summaries for the Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @return List of Credential Summary Objects
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+        """
+        self.send_getAllCredentialSummaryForGateway(authzToken, type, gatewayId)
+        return self.recv_getAllCredentialSummaryForGateway()
+
+    def send_getAllCredentialSummaryForGateway(self, authzToken, type, gatewayId):
+        self._oprot.writeMessageBegin('getAllCredentialSummaryForGateway', TMessageType.CALL, self._seqid)
+        args = getAllCredentialSummaryForGateway_args()
+        args.authzToken = authzToken
+        args.type = type
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllCredentialSummaryForGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllCredentialSummaryForGateway_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllCredentialSummaryForGateway failed: unknown result")
+
+    def getAllCredentialSummaryForUsersInGateway(self, authzToken, type, gatewayId, userId):
+        """
+
+        Get all Credential summaries for user in a Gateway
+
+        @param CredStoreToken
+           Credential Store Token which you want to find the Public Key for.
+
+        @param credential_store_data_models.SummaryType
+           Summary type : SSH,PASSWD or CERT
+
+        @param gatewayId
+           This is the unique identifier of your gateway where the token and public key was generated from.
+
+        @param userId
+           This is the unique identifier of user whose public keys are to be fetched.
+
+        @return CredentialSummary
+
+
+
+        Parameters:
+         - authzToken
+         - type
+         - gatewayId
+         - userId
+        """
+        self.send_getAllCredentialSummaryForUsersInGateway(authzToken, type, gatewayId, userId)
+        return self.recv_getAllCredentialSummaryForUsersInGateway()
+
+    def send_getAllCredentialSummaryForUsersInGateway(self, authzToken, type, gatewayId, userId):
+        self._oprot.writeMessageBegin('getAllCredentialSummaryForUsersInGateway', TMessageType.CALL, self._seqid)
+        args = getAllCredentialSummaryForUsersInGateway_args()
+        args.authzToken = authzToken
+        args.type = type
+        args.gatewayId = gatewayId
+        args.userId = userId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllCredentialSummaryForUsersInGateway(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllCredentialSummaryForUsersInGateway_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllCredentialSummaryForUsersInGateway failed: unknown result")
+
+    def getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllGatewayPWDCredentials(authzToken, gatewayId)
+        return self.recv_getAllGatewayPWDCredentials()
+
+    def send_getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllGatewayPWDCredentials', TMessageType.CALL, self._seqid)
+        args = getAllGatewayPWDCredentials_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllGatewayPWDCredentials(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllGatewayPWDCredentials_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllGatewayPWDCredentials failed: unknown result")
+
+    def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+
+        Delete a Gateway
+
+        @param gatewayId
+           The gateway Id of the Gateway to be deleted.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        self.send_deleteSSHPubKey(authzToken, airavataCredStoreToken, gatewayId)
+        return self.recv_deleteSSHPubKey()
+
+    def send_deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+        self._oprot.writeMessageBegin('deleteSSHPubKey', TMessageType.CALL, self._seqid)
+        args = deleteSSHPubKey_args()
+        args.authzToken = authzToken
+        args.airavataCredStoreToken = airavataCredStoreToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteSSHPubKey(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteSSHPubKey_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteSSHPubKey failed: unknown result")
+
+    def deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+        """
+        Parameters:
+         - authzToken
+         - airavataCredStoreToken
+         - gatewayId
+        """
+        self.send_deletePWDCredential(authzToken, airavataCredStoreToken, gatewayId)
+        return self.recv_deletePWDCredential()
+
+    def send_deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+        self._oprot.writeMessageBegin('deletePWDCredential', TMessageType.CALL, self._seqid)
+        args = deletePWDCredential_args()
+        args.authzToken = authzToken
+        args.airavataCredStoreToken = airavataCredStoreToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deletePWDCredential(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deletePWDCredential_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
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deletePWDCredential failed: unknown result")
+
+    def createProject(self, authzToken, gatewayId, project):
+        """
+
+        Creates a Project with basic metadata.
+           A Project is a container of experiments.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param Project
+           The Project Object described in the workspace_model.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - project
+        """
+        self.send_createProject(authzToken, gatewayId, project)
+        return self.recv_createProject()
+
+    def send_createProject(self, authzToken, gatewayId, project):
+        self._oprot.writeMessageBegin('createProject', TMessageType.CALL, self._seqid)
+        args = createProject_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.project = project
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createProject_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, "createProject failed: unknown result")
+
+    def updateProject(self, authzToken, projectId, updatedProject):
+        """
+
+        Update an Existing Project
+
+        @param projectId
+           The projectId of the project needed an update.
+
+        @return void
+           Currently this does not return any value.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - updatedProject
+        """
+        self.send_updateProject(authzToken, projectId, updatedProject)
+        self.recv_updateProject()
+
+    def send_updateProject(self, authzToken, projectId, updatedProject):
+        self._oprot.writeMessageBegin('updateProject', TMessageType.CALL, self._seqid)
+        args = updateProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.updatedProject = updatedProject
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateProject_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        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.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def getProject(self, authzToken, projectId):
+        """
+
+        Get a Project by ID
+           This method is to obtain a project by providing a projectId.
+
+        @param projectId
+           projectId of the project you require.
+
+        @return project
+           project data model will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        self.send_getProject(authzToken, projectId)
+        return self.recv_getProject()
+
+    def send_getProject(self, authzToken, projectId):
+        self._oprot.writeMessageBegin('getProject', TMessageType.CALL, self._seqid)
+        args = getProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getProject_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.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getProject failed: unknown result")
+
+    def deleteProject(self, authzToken, projectId):
+        """
+
+        Delete a Project
+           This method is used to delete an existing Project.
+
+        @param projectId
+           projectId of the project you want to delete.
+
+        @return boolean
+           Boolean identifier for the success or failure of the deletion operation.
+
+           NOTE: This method is not used within gateways connected with Airavata.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+        """
+        self.send_deleteProject(authzToken, projectId)
+        return self.recv_deleteProject()
+
+    def send_deleteProject(self, authzToken, projectId):
+        self._oprot.writeMessageBegin('deleteProject', TMessageType.CALL, self._seqid)
+        args = deleteProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteProject_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.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteProject failed: unknown result")
+
+    def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All User Projects
+        Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The identifier for the requested gateway.
+
+        @param userName
+           The identifier of the user.
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        self.send_getUserProjects(authzToken, gatewayId, userName, limit, offset)
+        return self.recv_getUserProjects()
+
+    def send_getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+        self._oprot.writeMessageBegin('getUserProjects', TMessageType.CALL, self._seqid)
+        args = getUserProjects_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getUserProjects(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getUserProjects_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, "getUserProjects failed: unknown result")
+
+    def searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+
+        Search User Projects
+        Search and get all Projects for user by project description or/and project name  with pagination.
+        Results will be ordered based on creation time DESC.
+
+        @param gatewayId
+           The unique identifier of the gateway making the request.
+
+        @param userName
+           The identifier of the user.
+
+        @param filters
+           Map of multiple filter criteria. Currenlt search filters includes Project Name and Project Description
+
+        @param limit
+           The amount results to be fetched.
+
+        @param offset
+           The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        self.send_searchProjects(authzToken, gatewayId, userName, filters, limit, offset)
+        return self.recv_searchProjects()
+
+    def send_searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+        self._oprot.writeMessageBegin('searchProjects', TMessageType.CALL, self._seqid)
+        args = searchProjects_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.filters = filters
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_searchProjects(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = searchProjects_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, "searchProjects failed: unknown result")
+
+    def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+        """
+        Search Experiments.
+        Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requested gateway.
+
+        @param userName
+              Username of the user requesting the search function.
+
+        @param filters
+              Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+        @return ExperimentSummaryModel
+           List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - filters
+         - limit
+         - offset
+        """
+        self.send_searchExperiments(authzToken, gatewayId, userName, filters, limit, offset)
+        return self.recv_searchExperiments()
+
+    def send_searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+        self._oprot.writeMessageBegin('searchExperiments', TMessageType.CALL, self._seqid)
+        args = searchExperiments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.filters = filters
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_searchExperiments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = searchExperiments_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, "searchExperiments failed: unknown result")
+
+    def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName):
+        """
+
+        Get Experiment Statistics
+        Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
+        @param gatewayId
+              Unique identifier of the gateway making the request to fetch statistics.
+
+        @param fromTime
+              Starting date time.
+
+        @param toTime
+              Ending data time.
+
+        @param userName
+              Gateway username substring with which to further filter statistics.
+
+        @param applicationName
+              Application id substring with which to further filter statistics.
+
+        @param resourceHostName
+              Hostname id substring with which to further filter statistics.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - fromTime
+         - toTime
+         - userName
+         - applicationName
+         - resourceHostName
+        """
+        self.send_getExperimentStatistics(authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName)
+        return self.recv_getExperimentStatistics()
+
+    def send_getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime, userName, applicationName, resourceHostName):
+        self._oprot.writeMessageBegin('getExperimentStatistics', TMessageType.CALL, self._seqid)
+        args = getExperimentStatistics_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.fromTime = fromTime
+        args.toTime = toTime
+        args.userName = userName
+        args.applicationName = applicationName
+        args.resourceHostName = resourceHostName
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentStatistics(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentStatistics_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, "getExperimentStatistics failed: unknown result")
+
+    def getExperimentsInProject(self, authzToken, projectId, limit, offset):
+        """
+
+        Get All Experiments of the Project
+        Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
+
+        @param projectId
+              Uniqie identifier of the project.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - projectId
+         - limit
+         - offset
+        """
+        self.send_getExperimentsInProject(authzToken, projectId, limit, offset)
+        return self.recv_getExperimentsInProject()
+
+    def send_getExperimentsInProject(self, authzToken, projectId, limit, offset):
+        self._oprot.writeMessageBegin('getExperimentsInProject', TMessageType.CALL, self._seqid)
+        args = getExperimentsInProject_args()
+        args.authzToken = authzToken
+        args.projectId = projectId
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentsInProject(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentsInProject_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.pnfe is not None:
+            raise result.pnfe
+        if result.ae is not None:
+            raise result.ae
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperimentsInProject failed: unknown result")
+
+    def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+        """
+
+        Get All Experiments of the User
+        Get experiments by user with pagination. Results will be sorted based on creation time DESC.
+
+        @param gatewayId
+              Identifier of the requesting gateway.
+
+        @param userName
+              Username of the requested end user.
+
+        @param limit
+              Amount of results to be fetched.
+
+        @param offset
+              The starting point of the results to be fetched.
+
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - userName
+         - limit
+         - offset
+        """
+        self.send_getUserExperiments(authzToken, gatewayId, userName, limit, offset)
+        return self.recv_getUserExperiments()
+
+    def send_getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+        self._oprot.writeMessageBegin('getUserExperiments', TMessageType.CALL, self._seqid)
+        args = getUserExperiments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.userName = userName
+        args.limit = limit
+        args.offset = offset
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getUserExperiments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getUserExperiments_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, "getUserExperiments failed: unknown result")
+
+    def createExperiment(self, authzToken, gatewayId, experiment):
+        """
+          *
+          * Create New Experiment
+          * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+          *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
+          *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+          *   registering the experiment in a persistent store.
+          *
+          * @param gatewayId
+          *    The unique ID of the gateway where the experiment is been created.
+          *
+          * @param ExperimentModel
+          *    The create experiment will require the basic experiment metadata like the name and description, intended user,
+          *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+          *      the ExperimentMetadata is a required field.
+          *
+          * @return
+          *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - experiment
+        """
+        self.send_createExperiment(authzToken, gatewayId, experiment)
+        return self.recv_createExperiment()
+
+    def send_createExperiment(self, authzToken, gatewayId, experiment):
+        self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
+        args = createExperiment_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.experiment = experiment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_createExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = createExperiment_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, "createExperiment failed: unknown result")
+
+    def deleteExperiment(self, authzToken, experimentId):
+        """
+
+        Delete an Experiment
+        If the experiment is not already launched experiment can be deleted.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you want to delete.
+
+        @return boolean
+            Identifier for the success or failure of the deletion operation.
+
+
+
+        Parameters:
+         - authzToken
+         - experimentId
+        """
+        self.send_deleteExperiment(authzToken, experimentId)
+        return self.recv_deleteExperiment()
+
+    def send_deleteExperiment(self, authzToken, experimentId):
+        self._oprot.writeMessageBegin('deleteExperiment', TMessageType.CALL, self._seqid)
+        args = deleteExperiment_args()
+        args.authzToken = authzToken
+        args.experimentId = experimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteExperiment_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, "deleteExperiment failed: unknown result")
+
+    def getExperiment(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment
+          * Fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperiment(authzToken, airavataExperimentId)
+        return self.recv_getExperiment()
+
+    def send_getExperiment(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
+        args = getExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperiment_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.enf is not None:
+            raise result.enf
+        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, "getExperiment failed: unknown result")
+
+    def getExperimentByAdmin(self, authzToken, airavataExperimentId):
+        """
+          *
+          * Get Experiment by an admin user
+          *
+          * Used by an admin user to fetch previously created experiment metadata.
+          *
+          * @param airavataExperimentId
+          *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+          *
+          * @return ExperimentModel
+          *   This method will return the previously stored experiment metadata.
+          *
+          * @throws org.apache.airavata.model.error.InvalidRequestException
+          *    For any incorrect forming of the request itself.
+          *
+          * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+          *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+          *
+          * @throws org.apache.airavata.model.error.AiravataClientException
+          *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+          *
+          *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+          *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+          *         gateway registration steps and retry this request.
+          *
+          *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+          *         For now this is a place holder.
+          *
+          *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+          *         is implemented, the authorization will be more substantial.
+          *
+          * @throws org.apache.airavata.model.error.AiravataSystemException
+          *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          *       rather an Airavata Administrator will be notified to take corrective action.
+          *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperimentByAdmin(authzToken, airavataExperimentId)
+        return self.recv_getExperimentByAdmin()
+
+    def send_getExperimentByAdmin(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperimentByAdmin', TMessageType.CALL, self._seqid)
+        args = getExperimentByAdmin_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentByAdmin(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentByAdmin_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.enf is not None:
+            raise result.enf
+        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, "getExperimentByAdmin failed: unknown result")
+
+    def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+        """
+
+        Get Complete Experiment Details
+        Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
+        tasks -> jobs information.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return ExperimentModel
+          This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+          information, special input output handling and additional quality of service parameters.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getDetailedExperimentTree(authzToken, airavataExperimentId)
+        return self.recv_getDetailedExperimentTree()
+
+    def send_getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getDetailedExperimentTree', TMessageType.CALL, self._seqid)
+        args = getDetailedExperimentTree_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getDetailedExperimentTree(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getDetailedExperimentTree_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.enf is not None:
+            raise result.enf
+        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, "getDetailedExperimentTree failed: unknown result")
+
+    def updateExperiment(self, authzToken, airavataExperimentId, experiment):
+        """
+
+        Update a Previously Created Experiment
+        Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+        The experiment has to be launched to make it actionable by the server.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @param ExperimentModel
+           The configuration information of the experiment with application input parameters, computational resource scheduling
+             information, special input output handling and additional quality of service parameters.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - experiment
+        """
+        self.send_updateExperiment(authzToken, airavataExperimentId, experiment)
+        self.recv_updateExperiment()
+
+    def send_updateExperiment(self, authzToken, airavataExperimentId, experiment):
+        self._oprot.writeMessageBegin('updateExperiment', TMessageType.CALL, self._seqid)
+        args = updateExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.experiment = experiment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        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 updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - userConfiguration
+        """
+        self.send_updateExperimentConfiguration(authzToken, airavataExperimentId, userConfiguration)
+        self.recv_updateExperimentConfiguration()
+
+    def send_updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+        self._oprot.writeMessageBegin('updateExperimentConfiguration', TMessageType.CALL, self._seqid)
+        args = updateExperimentConfiguration_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.userConfiguration = userConfiguration
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateExperimentConfiguration(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateExperimentConfiguration_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+        """
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - resourceScheduling
+        """
+        self.send_updateResourceScheduleing(authzToken, airavataExperimentId, resourceScheduling)
+        self.recv_updateResourceScheduleing()
+
+    def send_updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+        self._oprot.writeMessageBegin('updateResourceScheduleing', TMessageType.CALL, self._seqid)
+        args = updateResourceScheduleing_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.resourceScheduling = resourceScheduling
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateResourceScheduleing(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateResourceScheduleing_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ae is not None:
+            raise result.ae
+        return
+
+    def validateExperiment(self, authzToken, airavataExperimentId):
+        """
+         *
+         * Validate experiment configuration.
+         * A true in general indicates, the experiment is ready to be launched.
+         *
+         * @param airavataExperimentId
+         *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
+         *
+         * @return boolean
+         *      Identifier for the success or failure of the validation operation.
+         *
+        *
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_validateExperiment(authzToken, airavataExperimentId)
+        return self.recv_validateExperiment()
+
+    def send_validateExperiment(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('validateExperiment', TMessageType.CALL, self._seqid)
+        args = validateExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_validateExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = validateExperiment_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.enf is not None:
+            raise result.enf
+        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, "validateExperiment failed: unknown result")
+
+    def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Launch a Previously Created & Configured Experiment.
+        Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+        @gatewayId
+           ID of the gateway which will launch the experiment.
+
+        @param airavataExperimentId
+           The identifier for the requested experiment. This is returned during the create experiment step.
+
+        @return
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        self.send_launchExperiment(authzToken, airavataExperimentId, gatewayId)
+        self.recv_launchExperiment()
+
+    def send_launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        self._oprot.writeMessageBegin('launchExperiment', TMessageType.CALL, self._seqid)
+        args = launchExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_launchExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = launchExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        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 getExperimentStatus(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Status
+
+        Obtain the status of an experiment by providing the Experiment Id
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you require the status.
+
+        @return ExperimentStatus
+            ExperimentStatus model with the current status will be returned.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperimentStatus(authzToken, airavataExperimentId)
+        return self.recv_getExperimentStatus()
+
+    def send_getExperimentStatus(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperimentStatus', TMessageType.CALL, self._seqid)
+        args = getExperimentStatus_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentStatus(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentStatus_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.enf is not None:
+            raise result.enf
+        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, "getExperimentStatus failed: unknown result")
+
+    def getExperimentOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Experiment Outputs
+        This method to be used when need to obtain final outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need the outputs.
+
+        @return list
+            List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getExperimentOutputs(authzToken, airavataExperimentId)
+        return self.recv_getExperimentOutputs()
+
+    def send_getExperimentOutputs(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getExperimentOutputs', TMessageType.CALL, self._seqid)
+        args = getExperimentOutputs_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getExperimentOutputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getExperimentOutputs_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.enf is not None:
+            raise result.enf
+        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, "getExperimentOutputs failed: unknown result")
+
+    def getIntermediateOutputs(self, authzToken, airavataExperimentId):
+        """
+
+        Get Intermediate Experiment Outputs
+        This method to be used when need to obtain intermediate outputs of a certain Experiment
+
+        @param authzToken
+
+        @param airavataExperimentId
+            Experiment ID of the experimnet you need intermediate outputs.
+
+        @return list
+            List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getIntermediateOutputs(authzToken, airavataExperimentId)
+        return self.recv_getIntermediateOutputs()
+
+    def send_getIntermediateOutputs(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getIntermediateOutputs', TMessageType.CALL, self._seqid)
+        args = getIntermediateOutputs_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getIntermediateOutputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getIntermediateOutputs_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.enf is not None:
+            raise result.enf
+        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, "getIntermediateOutputs failed: unknown result")
+
+    def getJobStatuses(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Statuses for an Experiment
+        This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need the job statuses.
+
+        @return JobStatus
+            Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getJobStatuses(authzToken, airavataExperimentId)
+        return self.recv_getJobStatuses()
+
+    def send_getJobStatuses(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getJobStatuses', TMessageType.CALL, self._seqid)
+        args = getJobStatuses_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getJobStatuses(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getJobStatuses_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.enf is not None:
+            raise result.enf
+        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, "getJobStatuses failed: unknown result")
+
+    def getJobDetails(self, authzToken, airavataExperimentId):
+        """
+
+        Get Job Details for all the jobs within an Experiment.
+        This method to be used when need to get the job details for one or many jobs of an Experiment.
+
+        @param authzToken
+
+        @param experiementId
+            Experiment ID of the experimnet you need job details.
+
+        @return list of JobDetails
+            Job details.
+
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+        """
+        self.send_getJobDetails(authzToken, airavataExperimentId)
+        return self.recv_getJobDetails()
+
+    def send_getJobDetails(self, authzToken, airavataExperimentId):
+        self._oprot.writeMessageBegin('getJobDetails', TMessageType.CALL, self._seqid)
+        args = getJobDetails_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getJobDetails(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getJobDetails_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.enf is not None:
+            raise result.enf
+        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, "getJobDetails failed: unknown result")
+
+    def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        self.send_cloneExperiment(authzToken, existingExperimentID, newExperimentName, newExperimentProjectId)
+        return self.recv_cloneExperiment()
+
+    def send_cloneExperiment(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        self._oprot.writeMessageBegin('cloneExperiment', TMessageType.CALL, self._seqid)
+        args = cloneExperiment_args()
+        args.authzToken = authzToken
+        args.existingExperimentID = existingExperimentID
+        args.newExperimentName = newExperimentName
+        args.newExperimentProjectId = newExperimentProjectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_cloneExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = cloneExperiment_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.enf is not None:
+            raise result.enf
+        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
+        if result.pnfe is not None:
+            raise result.pnfe
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result")
+
+    def cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        """
+
+        Clone an Existing Experiment by an admin user
+        Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+          The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+        @param newExperimentName
+           experiment name that should be used in the cloned experiment
+
+        @param updatedExperiment
+           Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+             the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+             should be shared public by default.
+        @param newExperimentProjectId
+           The project in which to create the cloned experiment. This is optional and if null the experiment will be created
+             in the same project as the existing experiment.
+
+        @return
+          The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - existingExperimentID
+         - newExperimentName
+         - newExperimentProjectId
+        """
+        self.send_cloneExperimentByAdmin(authzToken, existingExperimentID, newExperimentName, newExperimentProjectId)
+        return self.recv_cloneExperimentByAdmin()
+
+    def send_cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId):
+        self._oprot.writeMessageBegin('cloneExperimentByAdmin', TMessageType.CALL, self._seqid)
+        args = cloneExperimentByAdmin_args()
+        args.authzToken = authzToken
+        args.existingExperimentID = existingExperimentID
+        args.newExperimentName = newExperimentName
+        args.newExperimentProjectId = newExperimentProjectId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_cloneExperimentByAdmin(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = cloneExperimentByAdmin_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.enf is not None:
+            raise result.enf
+        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
+        if result.pnfe is not None:
+            raise result.pnfe
+        raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperimentByAdmin failed: unknown result")
+
+    def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        """
+
+        Terminate a running Experiment.
+
+        @gatewayId
+           ID of the gateway which will terminate the running Experiment.
+
+        @param airavataExperimentId
+           The identifier of the experiment required termination. This ID is returned during the create experiment step.
+
+        @return status
+          This method call does not have a return value.
+
+        @throws org.apache.airavata.model.error.InvalidRequestException
+           For any incorrect forming of the request itself.
+
+        @throws org.apache.airavata.model.error.ExperimentNotFoundException
+           If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+        @throws org.apache.airavata.model.error.AiravataClientException
+           The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+             
+             UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+                step, then Airavata Registry will not have a provenance area setup. The client has to follow
+                gateway registration steps and retry this request.
+
+             AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+                For now this is a place holder.
+
+             INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+                is implemented, the authorization will be more substantial.
+
+        @throws org.apache.airavata.model.error.AiravataSystemException
+           This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+              rather an Airavata Administrator will be notified to take corrective action.
+
+
+        Parameters:
+         - authzToken
+         - airavataExperimentId
+         - gatewayId
+        """
+        self.send_terminateExperiment(authzToken, airavataExperimentId, gatewayId)
+        self.recv_terminateExperiment()
+
+    def send_terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+        self._oprot.writeMessageBegin('terminateExperiment', TMessageType.CALL, self._seqid)
+        args = terminateExperiment_args()
+        args.authzToken = authzToken
+        args.airavataExperimentId = airavataExperimentId
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_terminateExperiment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = terminateExperiment_result()
+        result.read(iprot)
+        iprot.readMessageEnd()
+        if result.ire is not None:
+            raise result.ire
+        if result.enf is not None:
+            raise result.enf
+        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 registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+        """
+
+        Register a Application Module.
+
+        @gatewayId
+           ID of the gateway which is registering the new Application Module.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return appModuleId
+          Returns the server-side generated airavata appModule globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationModule
+        """
+        self.send_registerApplicationModule(authzToken, gatewayId, applicationModule)
+        return self.recv_registerApplicationModule()
+
+    def send_registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+        self._oprot.writeMessageBegin('registerApplicationModule', TMessageType.CALL, self._seqid)
+        args = registerApplicationModule_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.applicationModule = applicationModule
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerApplicationModule_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, "registerApplicationModule failed: unknown result")
+
+    def getApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Fetch a Application Module.
+
+        @param appModuleId
+          The unique identifier of the application module required
+
+        @return applicationModule
+          Returns an Application Module Object.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        self.send_getApplicationModule(authzToken, appModuleId)
+        return self.recv_getApplicationModule()
+
+    def send_getApplicationModule(self, authzToken, appModuleId):
+        self._oprot.writeMessageBegin('getApplicationModule', TMessageType.CALL, self._seqid)
+        args = getApplicationModule_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationModule_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, "getApplicationModule failed: unknown result")
+
+    def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+        """
+
+        Update a Application Module.
+
+        @param appModuleId
+          The identifier for the requested application module to be updated.
+
+        @param applicationModule
+           Application Module Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+         - applicationModule
+        """
+        self.send_updateApplicationModule(authzToken, appModuleId, applicationModule)
+        return self.recv_updateApplicationModule()
+
+    def send_updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+        self._oprot.writeMessageBegin('updateApplicationModule', TMessageType.CALL, self._seqid)
+        args = updateApplicationModule_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.applicationModule = applicationModule
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateApplicationModule_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, "updateApplicationModule failed: unknown result")
+
+    def getAllAppModules(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Module Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list
+           Returns the list of all Application Module Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllAppModules(authzToken, gatewayId)
+        return self.recv_getAllAppModules()
+
+    def send_getAllAppModules(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllAppModules', TMessageType.CALL, self._seqid)
+        args = getAllAppModules_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllAppModules(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllAppModules_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, "getAllAppModules failed: unknown result")
+
+    def deleteApplicationModule(self, authzToken, appModuleId):
+        """
+
+        Delete an Application Module.
+
+        @param appModuleId
+          The identifier of the Application Module to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        self.send_deleteApplicationModule(authzToken, appModuleId)
+        return self.recv_deleteApplicationModule()
+
+    def send_deleteApplicationModule(self, authzToken, appModuleId):
+        self._oprot.writeMessageBegin('deleteApplicationModule', TMessageType.CALL, self._seqid)
+        args = deleteApplicationModule_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteApplicationModule(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteApplicationModule_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, "deleteApplicationModule failed: unknown result")
+
+    def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+        """
+
+        Register an Application Deployment.
+
+        @param gatewayId
+           ID of the gateway which is registering the new Application Deployment.
+
+        @param applicationDeployment
+           Application Module Object created from the datamodel.
+
+        @return appDeploymentId
+          Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationDeployment
+        """
+        self.send_registerApplicationDeployment(authzToken, gatewayId, applicationDeployment)
+        return self.recv_registerApplicationDeployment()
+
+    def send_registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+        self._oprot.writeMessageBegin('registerApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = registerApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.applicationDeployment = applicationDeployment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerApplicationDeployment_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, "registerApplicationDeployment failed: unknown result")
+
+    def getApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Fetch a Application Deployment.
+
+        @param appDeploymentId
+          The identifier for the requested application module
+
+        @return applicationDeployment
+          Returns a application Deployment Object.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        self.send_getApplicationDeployment(authzToken, appDeploymentId)
+        return self.recv_getApplicationDeployment()
+
+    def send_getApplicationDeployment(self, authzToken, appDeploymentId):
+        self._oprot.writeMessageBegin('getApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = getApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.appDeploymentId = appDeploymentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationDeployment_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, "getApplicationDeployment failed: unknown result")
+
+    def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+        """
+
+        Update an Application Deployment.
+
+        @param appDeploymentId
+          The identifier of the requested application deployment to be updated.
+
+        @param appDeployment
+           Application Deployment Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+         - applicationDeployment
+        """
+        self.send_updateApplicationDeployment(authzToken, appDeploymentId, applicationDeployment)
+        return self.recv_updateApplicationDeployment()
+
+    def send_updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+        self._oprot.writeMessageBegin('updateApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = updateApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.appDeploymentId = appDeploymentId
+        args.applicationDeployment = applicationDeployment
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateApplicationDeployment_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, "updateApplicationDeployment failed: unknown result")
+
+    def deleteApplicationDeployment(self, authzToken, appDeploymentId):
+        """
+
+        Delete an Application Deployment.
+
+        @param appDeploymentId
+          The unique identifier of application deployment to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appDeploymentId
+        """
+        self.send_deleteApplicationDeployment(authzToken, appDeploymentId)
+        return self.recv_deleteApplicationDeployment()
+
+    def send_deleteApplicationDeployment(self, authzToken, appDeploymentId):
+        self._oprot.writeMessageBegin('deleteApplicationDeployment', TMessageType.CALL, self._seqid)
+        args = deleteApplicationDeployment_args()
+        args.authzToken = authzToken
+        args.appDeploymentId = appDeploymentId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteApplicationDeployment(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteApplicationDeployment_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, "deleteApplicationDeployment failed: unknown result")
+
+    def getAllApplicationDeployments(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Deployment Descriptions.
+
+        @param gatewayId
+           ID of the gateway which need to list all available application deployment documentation.
+
+        @return list<applicationDeployment.
+           Returns the list of all application Deployment Objects.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllApplicationDeployments(authzToken, gatewayId)
+        return self.recv_getAllApplicationDeployments()
+
+    def send_getAllApplicationDeployments(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllApplicationDeployments', TMessageType.CALL, self._seqid)
+        args = getAllApplicationDeployments_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllApplicationDeployments(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllApplicationDeployments_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, "getAllApplicationDeployments failed: unknown result")
+
+    def getAppModuleDeployedResources(self, authzToken, appModuleId):
+        """
+        Fetch a list of Deployed Compute Hosts.
+
+        @param appModuleId
+          The identifier for the requested application module
+
+        @return list<string>
+          Returns a list of Deployed Resources.
+
+
+        Parameters:
+         - authzToken
+         - appModuleId
+        """
+        self.send_getAppModuleDeployedResources(authzToken, appModuleId)
+        return self.recv_getAppModuleDeployedResources()
+
+    def send_getAppModuleDeployedResources(self, authzToken, appModuleId):
+        self._oprot.writeMessageBegin('getAppModuleDeployedResources', TMessageType.CALL, self._seqid)
+        args = getAppModuleDeployedResources_args()
+        args.authzToken = authzToken
+        args.appModuleId = appModuleId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAppModuleDeployedResources(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAppModuleDeployedResources_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, "getAppModuleDeployedResources failed: unknown result")
+
+    def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+        """
+
+        Register a Application Interface.
+
+        @param applicationInterface
+           Application Module Object created from the datamodel.
+
+        @return appInterfaceId
+          Returns a server-side generated airavata application interface globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+         - applicationInterface
+        """
+        self.send_registerApplicationInterface(authzToken, gatewayId, applicationInterface)
+        return self.recv_registerApplicationInterface()
+
+    def send_registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+        self._oprot.writeMessageBegin('registerApplicationInterface', TMessageType.CALL, self._seqid)
+        args = registerApplicationInterface_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.applicationInterface = applicationInterface
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerApplicationInterface_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, "registerApplicationInterface failed: unknown result")
+
+    def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+        """
+
+        Clone an Application Interface.
+
+        @gatewayId
+           The identifier for the gateway profile to be requested
+
+        @param existingAppInterfaceID
+           Identifier of the existing Application interface you wich to clone.
+
+        @param newApplicationName
+           Name for the new application interface.
+
+        @return appInterfaceId
+           Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
+        Parameters:
+         - authzToken
+         - existingAppInterfaceID
+         - newApplicationName
+         - gatewayId
+        """
+        self.send_cloneApplicationInterface(authzToken, existingAppInterfaceID, newApplicationName, gatewayId)
+        return self.recv_cloneApplicationInterface()
+
+    def send_cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+        self._oprot.writeMessageBegin('cloneApplicationInterface', TMessageType.CALL, self._seqid)
+        args = cloneApplicationInterface_args()
+        args.authzToken = authzToken
+        args.existingAppInterfaceID = existingAppInterfaceID
+        args.newApplicationName = newApplicationName
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_cloneApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = cloneApplicationInterface_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, "cloneApplicationInterface failed: unknown result")
+
+    def getApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Fetch an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return applicationInterface
+          Returns an application Interface Object.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getApplicationInterface(authzToken, appInterfaceId)
+        return self.recv_getApplicationInterface()
+
+    def send_getApplicationInterface(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getApplicationInterface', TMessageType.CALL, self._seqid)
+        args = getApplicationInterface_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationInterface_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, "getApplicationInterface failed: unknown result")
+
+    def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+        """
+
+        Update a Application Interface.
+
+        @param appInterfaceId
+          The identifier of the requested application deployment to be updated.
+
+        @param appInterface
+           Application Interface Object created from the datamodel.
+
+        @return status
+          Returns a success/failure of the update.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+         - applicationInterface
+        """
+        self.send_updateApplicationInterface(authzToken, appInterfaceId, applicationInterface)
+        return self.recv_updateApplicationInterface()
+
+    def send_updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+        self._oprot.writeMessageBegin('updateApplicationInterface', TMessageType.CALL, self._seqid)
+        args = updateApplicationInterface_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.applicationInterface = applicationInterface
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_updateApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = updateApplicationInterface_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, "updateApplicationInterface failed: unknown result")
+
+    def deleteApplicationInterface(self, authzToken, appInterfaceId):
+        """
+
+        Delete an Application Interface.
+
+        @param appInterfaceId
+          The identifier for the requested application interface to be deleted.
+
+        @return status
+          Returns a success/failure of the deletion.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_deleteApplicationInterface(authzToken, appInterfaceId)
+        return self.recv_deleteApplicationInterface()
+
+    def send_deleteApplicationInterface(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('deleteApplicationInterface', TMessageType.CALL, self._seqid)
+        args = deleteApplicationInterface_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_deleteApplicationInterface(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = deleteApplicationInterface_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, "deleteApplicationInterface failed: unknown result")
+
+    def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+        """
+
+        Fetch name and ID of  Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces with corresponsing ID's
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllApplicationInterfaceNames(authzToken, gatewayId)
+        return self.recv_getAllApplicationInterfaceNames()
+
+    def send_getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllApplicationInterfaceNames', TMessageType.CALL, self._seqid)
+        args = getAllApplicationInterfaceNames_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllApplicationInterfaceNames(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllApplicationInterfaceNames_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, "getAllApplicationInterfaceNames failed: unknown result")
+
+    def getAllApplicationInterfaces(self, authzToken, gatewayId):
+        """
+
+        Fetch all Application Interface documents.
+
+
+        @return map<applicationId, applicationInterfaceNames>
+          Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
+
+
+        Parameters:
+         - authzToken
+         - gatewayId
+        """
+        self.send_getAllApplicationInterfaces(authzToken, gatewayId)
+        return self.recv_getAllApplicationInterfaces()
+
+    def send_getAllApplicationInterfaces(self, authzToken, gatewayId):
+        self._oprot.writeMessageBegin('getAllApplicationInterfaces', TMessageType.CALL, self._seqid)
+        args = getAllApplicationInterfaces_args()
+        args.authzToken = authzToken
+        args.gatewayId = gatewayId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAllApplicationInterfaces(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAllApplicationInterfaces_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, "getAllApplicationInterfaces failed: unknown result")
+
+    def getApplicationInputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch the list of Application Inputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need inputs to be fetched.
+
+        @return list<application_interface_model.InputDataObjectType>
+          Returns a list of application inputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getApplicationInputs(authzToken, appInterfaceId)
+        return self.recv_getApplicationInputs()
+
+    def send_getApplicationInputs(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getApplicationInputs', TMessageType.CALL, self._seqid)
+        args = getApplicationInputs_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationInputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationInputs_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, "getApplicationInputs failed: unknown result")
+
+    def getApplicationOutputs(self, authzToken, appInterfaceId):
+        """
+
+        Fetch list of Application Outputs.
+
+        @param appInterfaceId
+          The identifier of the application interface which need outputs to be fetched.
+
+        @return list<application_interface_model.OutputDataObjectType>
+          Returns a list of application outputs.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getApplicationOutputs(authzToken, appInterfaceId)
+        return self.recv_getApplicationOutputs()
+
+    def send_getApplicationOutputs(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getApplicationOutputs', TMessageType.CALL, self._seqid)
+        args = getApplicationOutputs_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getApplicationOutputs(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getApplicationOutputs_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, "getApplicationOutputs failed: unknown result")
+
+    def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+        """
+
+        Fetch a list of all deployed Compute Hosts for a given application interfaces.
+
+        @param appInterfaceId
+          The identifier for the requested application interface.
+
+        @return map<computeResourceId, computeResourceName>
+          A map of registered compute resource id's and their corresponding hostnames.
+          Deployments of each modules listed within the interfaces will be listed.
+
+
+        Parameters:
+         - authzToken
+         - appInterfaceId
+        """
+        self.send_getAvailableAppInterfaceComputeResources(authzToken, appInterfaceId)
+        return self.recv_getAvailableAppInterfaceComputeResources()
+
+    def send_getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+        self._oprot.writeMessageBegin('getAvailableAppInterfaceComputeResources', TMessageType.CALL, self._seqid)
+        args = getAvailableAppInterfaceComputeResources_args()
+        args.authzToken = authzToken
+        args.appInterfaceId = appInterfaceId
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_getAvailableAppInterfaceComputeResources(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = getAvailableAppInterfaceComputeResources_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, "getAvailableAppInterfaceComputeResources failed: unknown result")
+
+    def registerComputeResource(self, authzToken, computeResourceDescription):
+        """
+        Register a Compute Resource.
+
+        @param computeResourceDescription
+           Compute Resource Object created from the datamodel.
+
+        @return computeResourceId
+          Returns a server-side generated airavata compute resource globally unique identifier.
+
+
+        Parameters:
+         - authzToken
+         - computeResourceDescription
+        """
+        self.send_registerComputeResource(authzToken, computeResourceDescription)
+        return self.recv_registerComputeResource()
+
+    def send_registerComputeResource(self, authzToken, computeResourceDescription):
+        self._oprot.writeMessageBegin('registerComputeResource', TMessageType.CALL, self._seqid)
+        args = registerComputeResource_args()
+        args.authzToken = authzToken
+        args.computeResourceDescription = computeResourceDescription
+        args.write(self._oprot)
+        self._oprot.writeMessageEnd()
+        self._oprot.trans.flush()
+
+    def recv_registerComputeResource(self):
+        iprot = self._iprot
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+        if mtype == TMessageType.EXCEPTION:
+            x = TApplicationException()
+            x.read(iprot)
+            iprot.readMessageEnd()
+            raise x
+        result = registerComputeResource_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:
+  &nbs