You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2015/03/24 10:19:18 UTC

[7/8] airavata git commit: Adding python generated code - AIRAVATA-1642

http://git-wip-us.apache.org/repos/asf/airavata/blob/97c7a736/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
new file mode 100644
index 0000000..ded8f77
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py
@@ -0,0 +1,29153 @@
+#
+# Autogenerated by Thrift Compiler (0.9.1)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+from thrift.Thrift import TProcessor
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class Iface:
+  def getAPIVersion(self):
+    """
+    Fetch Apache Airavata API version
+    """
+    pass
+
+  def addGateway(self, gateway):
+    """
+    Parameters:
+     - gateway
+    """
+    pass
+
+  def updateGateway(self, gatewayId, updatedGateway):
+    """
+    Parameters:
+     - gatewayId
+     - updatedGateway
+    """
+    pass
+
+  def getGateway(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def deleteGateway(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def getAllGateways(self):
+    pass
+
+  def isGatewayExist(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def generateAndRegisterSSHKeys(self, gatewayId, userName):
+    """
+    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.
+
+    @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:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def getSSHPubKey(self, airavataCredStoreToken):
+    """
+    Parameters:
+     - airavataCredStoreToken
+    """
+    pass
+
+  def getAllUserSSHPubKeys(self, userName):
+    """
+    Parameters:
+     - userName
+    """
+    pass
+
+  def createProject(self, 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 workspaceModel
+
+
+    Parameters:
+     - gatewayId
+     - project
+    """
+    pass
+
+  def updateProject(self, projectId, updatedProject):
+    """
+    Update a Project
+
+
+    Parameters:
+     - projectId
+     - updatedProject
+    """
+    pass
+
+  def getProject(self, projectId):
+    """
+    Get a Project by ID
+
+
+    Parameters:
+     - projectId
+    """
+    pass
+
+  def deleteProject(self, projectId):
+    """
+    Parameters:
+     - projectId
+    """
+    pass
+
+  def getAllUserProjects(self, gatewayId, userName):
+    """
+      * Get all Project by user
+      *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      *
+      * @param userName
+      *    The Project Object described in the workspaceModel
+      *
+    *
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def searchProjectsByProjectName(self, gatewayId, userName, projectName):
+    """
+    Get all Project for user by project name
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - projectName
+    """
+    pass
+
+  def searchProjectsByProjectDesc(self, gatewayId, userName, description):
+    """
+    Get all Project for user by project description
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    pass
+
+  def searchExperimentsByName(self, gatewayId, userName, expName):
+    """
+    Search Experiments by experiment name
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - expName
+    """
+    pass
+
+  def searchExperimentsByDesc(self, gatewayId, userName, description):
+    """
+    Search Experiments by experiment name
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    pass
+
+  def searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+    """
+    Search Experiments by application id
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - applicationId
+    """
+    pass
+
+  def searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+    """
+    Search Experiments by experiment status
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - experimentState
+    """
+    pass
+
+  def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+    """
+    Search Experiments by experiment status
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+    """
+    pass
+
+  def getAllExperimentsInProject(self, projectId):
+    """
+    Get all Experiments within a Project
+
+
+    Parameters:
+     - projectId
+    """
+    pass
+
+  def getAllUserExperiments(self, gatewayId, userName):
+    """
+    Get all Experiments by user
+
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def createExperiment(self, gatewayId, experiment):
+    """
+    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+      but inferred from the authentication 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 basicExperimentMetadata
+       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 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:
+     - gatewayId
+     - experiment
+    """
+    pass
+
+  def getExperiment(self, airavataExperimentId):
+    """
+    Fetch previously created experiment metadata.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return experimentMetada
+      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:
+     - airavataExperimentId
+    """
+    pass
+
+  def updateExperiment(self, airavataExperimentId, experiment):
+    """
+    Configure a previously 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 experimentConfigurationData
+       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:
+     - airavataExperimentId
+     - experiment
+    """
+    pass
+
+  def updateExperimentConfiguration(self, airavataExperimentId, userConfiguration):
+    """
+    Parameters:
+     - airavataExperimentId
+     - userConfiguration
+    """
+    pass
+
+  def updateResourceScheduleing(self, airavataExperimentId, resourceScheduling):
+    """
+    Parameters:
+     - airavataExperimentId
+     - resourceScheduling
+    """
+    pass
+
+  def validateExperiment(self, airavataExperimentId):
+    """
+     *
+     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
+     *
+     * @param experimentID
+     * @return sucess/failure
+     *
+    *
+
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def launchExperiment(self, airavataExperimentId, airavataCredStoreToken):
+    """
+    Launch a previously created and 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.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @param airavataCredStoreToken:
+      A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+        credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+        generated token associated with the registered credentials. The client has to security posses this token id and is
+        required to pass it to Airavata Server for all execution requests.
+      Note: At this point only the credential store token is required so the string is directly passed here. In future if
+        if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+      Note: This parameter is not persisted within Airavata Registry for security reasons.
+
+    @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:
+     - airavataExperimentId
+     - airavataCredStoreToken
+    """
+    pass
+
+  def getExperimentStatus(self, airavataExperimentId):
+    """
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def getExperimentOutputs(self, airavataExperimentId):
+    """
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def getIntermediateOutputs(self, airavataExperimentId):
+    """
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def getJobStatuses(self, airavataExperimentId):
+    """
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def getJobDetails(self, airavataExperimentId):
+    """
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def getDataTransferDetails(self, airavataExperimentId):
+    """
+    Parameters:
+     - airavataExperimentId
+    """
+    pass
+
+  def cloneExperiment(self, existingExperimentID, newExperimentName):
+    """
+    Clone an specified experiment with a new name. 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.
+
+    @return
+      The server-side generated airavata experiment globally unique identifier 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:
+     - existingExperimentID
+     - newExperimentName
+    """
+    pass
+
+  def terminateExperiment(self, airavataExperimentId):
+    """
+    Terminate a running 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:
+     - airavataExperimentId
+    """
+    pass
+
+  def registerApplicationModule(self, gatewayId, applicationModule):
+    """
+    Register a Application Module.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appModuleId
+      Returns a server-side generated airavata appModule globally unique identifier.
+
+
+    Parameters:
+     - gatewayId
+     - applicationModule
+    """
+    pass
+
+  def getApplicationModule(self, appModuleId):
+    """
+    Fetch a Application Module.
+
+    @param appModuleId
+      The identifier for the requested application module
+
+    @return applicationModule
+      Returns a application Module Object.
+
+
+    Parameters:
+     - appModuleId
+    """
+    pass
+
+  def updateApplicationModule(self, 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:
+     - appModuleId
+     - applicationModule
+    """
+    pass
+
+  def getAllAppModules(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def deleteApplicationModule(self, appModuleId):
+    """
+    Delete a Application Module.
+
+    @param appModuleId
+      The identifier for the requested application module to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - appModuleId
+    """
+    pass
+
+  def registerApplicationDeployment(self, gatewayId, applicationDeployment):
+    """
+    Register a Application Deployment.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appDeploymentId
+      Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+    Parameters:
+     - gatewayId
+     - applicationDeployment
+    """
+    pass
+
+  def getApplicationDeployment(self, appDeploymentId):
+    """
+    Fetch a Application Deployment.
+
+    @param appDeploymentId
+      The identifier for the requested application module
+
+    @return applicationDeployment
+      Returns a application Deployment Object.
+
+
+    Parameters:
+     - appDeploymentId
+    """
+    pass
+
+  def updateApplicationDeployment(self, appDeploymentId, applicationDeployment):
+    """
+    Update a Application Deployment.
+
+    @param appDeploymentId
+      The identifier for 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:
+     - appDeploymentId
+     - applicationDeployment
+    """
+    pass
+
+  def deleteApplicationDeployment(self, appDeploymentId):
+    """
+    Delete a Application deployment.
+
+    @param appDeploymentId
+      The identifier for the requested application deployment to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - appDeploymentId
+    """
+    pass
+
+  def getAllApplicationDeployments(self, gatewayId):
+    """
+    Fetch all Application Deployment Descriptions.
+
+    @return list<applicationDeployment.
+      Returns the list of all application Deployment Objects.
+
+
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def getAppModuleDeployedResources(self, 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:
+     - appModuleId
+    """
+    pass
+
+  def registerApplicationInterface(self, gatewayId, applicationInterface):
+    """
+    Register a Application Interface.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appInterfaceId
+      Returns a server-side generated airavata application interface globally unique identifier.
+
+
+    Parameters:
+     - gatewayId
+     - applicationInterface
+    """
+    pass
+
+  def getApplicationInterface(self, appInterfaceId):
+    """
+    Fetch a Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application module
+
+    @return applicationInterface
+      Returns a application Interface Object.
+
+
+
+    Parameters:
+     - appInterfaceId
+    """
+    pass
+
+  def updateApplicationInterface(self, appInterfaceId, applicationInterface):
+    """
+    Update a Application Interface.
+
+    @param appInterfaceId
+      The identifier for 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:
+     - appInterfaceId
+     - applicationInterface
+    """
+    pass
+
+  def deleteApplicationInterface(self, appInterfaceId):
+    """
+    Delete a Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application interface to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+
+    Parameters:
+     - appInterfaceId
+    """
+    pass
+
+  def getAllApplicationInterfaceNames(self, gatewayId):
+    """
+    Fetch name and id of  Application Interface documents.
+
+
+    @return map<applicationId, applicationInterfaceNames>
+      Returns a list of application interfaces with corresponsing id's
+
+
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def getAllApplicationInterfaces(self, gatewayId):
+    """
+    Fetch all Application Interface documents.
+
+
+    @return map<applicationId, applicationInterfaceNames>
+      Returns a list of application interfaces documents
+
+
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def getApplicationInputs(self, appInterfaceId):
+    """
+    Fetch the list of Application Inputs.
+
+    @param appInterfaceId
+      The identifier for the requested application interface
+
+    @return list<applicationInterfaceModel.InputDataObjectType>
+      Returns a list of application inputs.
+
+
+    Parameters:
+     - appInterfaceId
+    """
+    pass
+
+  def getApplicationOutputs(self, appInterfaceId):
+    """
+    Fetch the list of Application Outputs.
+
+    @param appInterfaceId
+      The identifier for the requested application interface
+
+    @return list<applicationInterfaceModel.OutputDataObjectType>
+      Returns a list of application outputs.
+
+
+    Parameters:
+     - appInterfaceId
+    """
+    pass
+
+  def getAvailableAppInterfaceComputeResources(self, 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:
+     - appInterfaceId
+    """
+    pass
+
+  def registerComputeResource(self, 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:
+     - computeResourceDescription
+    """
+    pass
+
+  def getComputeResource(self, 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:
+     - computeResourceId
+    """
+    pass
+
+  def getAllComputeResourceNames(self):
+    """
+    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..
+
+    """
+    pass
+
+  def updateComputeResource(self, 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:
+     - computeResourceId
+     - computeResourceDescription
+    """
+    pass
+
+  def deleteComputeResource(self, 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:
+     - computeResourceId
+    """
+    pass
+
+  def addLocalSubmissionDetails(self, 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:
+     - computeResourceId
+     - priorityOrder
+     - localSubmission
+    """
+    pass
+
+  def updateLocalSubmissionDetails(self, 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:
+     - jobSubmissionInterfaceId
+     - localSubmission
+    """
+    pass
+
+  def getLocalJobSubmission(self, jobSubmissionId):
+    """
+    This method returns localJobSubmission object
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be retrieved.
+     @return LOCALSubmission instance
+
+
+    Parameters:
+     - jobSubmissionId
+    """
+    pass
+
+  def addSSHJobSubmissionDetails(self, 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:
+     - computeResourceId
+     - priorityOrder
+     - sshJobSubmission
+    """
+    pass
+
+  def getSSHJobSubmission(self, jobSubmissionId):
+    """
+    This method returns SSHJobSubmission object
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be retrieved.
+     @return SSHJobSubmission instance
+
+
+    Parameters:
+     - jobSubmissionId
+    """
+    pass
+
+  def addUNICOREJobSubmissionDetails(self, 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:
+     - computeResourceId
+     - priorityOrder
+     - unicoreJobSubmission
+    """
+    pass
+
+  def getUnicoreJobSubmission(self, jobSubmissionId):
+    """
+      * This method returns UnicoreJobSubmission object
+      * @param jobSubmissionInterfaceId
+      *   The identifier of the JobSubmission Interface to be retrieved.
+      *  @return UnicoreJobSubmission instance
+    *
+
+    Parameters:
+     - jobSubmissionId
+    """
+    pass
+
+  def addCloudJobSubmissionDetails(self, 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:
+     - computeResourceId
+     - priorityOrder
+     - cloudSubmission
+    """
+    pass
+
+  def getCloudJobSubmission(self, jobSubmissionId):
+    """
+       * This method returns cloudJobSubmission object
+       * @param jobSubmissionInterfaceI
+           *   The identifier of the JobSubmission Interface to be retrieved.
+       *  @return CloudJobSubmission instance
+    *
+
+    Parameters:
+     - jobSubmissionId
+    """
+    pass
+
+  def updateSSHJobSubmissionDetails(self, 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 deletion.
+
+
+    Parameters:
+     - jobSubmissionInterfaceId
+     - sshJobSubmission
+    """
+    pass
+
+  def updateCloudJobSubmissionDetails(self, jobSubmissionInterfaceId, sshJobSubmission):
+    """
+    Update the given SSH 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 deletion.
+
+
+    Parameters:
+     - jobSubmissionInterfaceId
+     - sshJobSubmission
+    """
+    pass
+
+  def updateUnicoreJobSubmissionDetails(self, jobSubmissionInterfaceId, unicoreJobSubmission):
+    """
+    Parameters:
+     - jobSubmissionInterfaceId
+     - unicoreJobSubmission
+    """
+    pass
+
+  def addLocalDataMovementDetails(self, computeResourceId, 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 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 localDataMovement
+      The LOCALDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - computeResourceId
+     - priorityOrder
+     - localDataMovement
+    """
+    pass
+
+  def updateLocalDataMovementDetails(self, 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:
+     - dataMovementInterfaceId
+     - localDataMovement
+    """
+    pass
+
+  def getLocalDataMovement(self, dataMovementId):
+    """
+            * This method returns local datamovement object
+            * @param dataMovementId
+            *   The identifier of the datamovement Interface to be retrieved.
+            *  @return LOCALDataMovement instance
+    *
+
+    Parameters:
+     - dataMovementId
+    """
+    pass
+
+  def addSCPDataMovementDetails(self, computeResourceId, 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 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 scpDataMovement
+      The SCPDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - computeResourceId
+     - priorityOrder
+     - scpDataMovement
+    """
+    pass
+
+  def updateSCPDataMovementDetails(self, 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:
+     - dataMovementInterfaceId
+     - scpDataMovement
+    """
+    pass
+
+  def getSCPDataMovement(self, dataMovementId):
+    """
+      * This method returns SCP datamovement object
+      * @param dataMovementId
+         *   The identifier of the datamovement Interface to be retrieved.
+         *  @return SCPDataMovement instance
+    *
+
+    Parameters:
+     - dataMovementId
+    """
+    pass
+
+  def addUnicoreDataMovementDetails(self, computeResourceId, priorityOrder, unicoreDataMovement):
+    """
+    Parameters:
+     - computeResourceId
+     - priorityOrder
+     - unicoreDataMovement
+    """
+    pass
+
+  def updateUnicoreDataMovementDetails(self, dataMovementInterfaceId, unicoreDataMovement):
+    """
+    Parameters:
+     - dataMovementInterfaceId
+     - unicoreDataMovement
+    """
+    pass
+
+  def getUnicoreDataMovement(self, dataMovementId):
+    """
+    Parameters:
+     - dataMovementId
+    """
+    pass
+
+  def addGridFTPDataMovementDetails(self, computeResourceId, 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 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 gridFTPDataMovement
+      The GridFTPDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - computeResourceId
+     - priorityOrder
+     - gridFTPDataMovement
+    """
+    pass
+
+  def updateGridFTPDataMovementDetails(self, 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 status
+      Returns a success/failure of the updation.
+
+
+    Parameters:
+     - dataMovementInterfaceId
+     - gridFTPDataMovement
+    """
+    pass
+
+  def getGridFTPDataMovement(self, dataMovementId):
+    """
+      * This method returns GridFTP datamovement object
+      * @param dataMovementId
+         *   The identifier of the datamovement Interface to be retrieved.
+      *  @return GridFTPDataMovement instance
+    *
+
+    Parameters:
+     - dataMovementId
+    """
+    pass
+
+  def changeJobSubmissionPriority(self, 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:
+     - jobSubmissionInterfaceId
+     - newPriorityOrder
+    """
+    pass
+
+  def changeDataMovementPriority(self, 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:
+     - dataMovementInterfaceId
+     - newPriorityOrder
+    """
+    pass
+
+  def changeJobSubmissionPriorities(self, 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:
+     - jobSubmissionPriorityMap
+    """
+    pass
+
+  def changeDataMovementPriorities(self, 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:
+     - dataMovementPriorityMap
+    """
+    pass
+
+  def deleteJobSubmissionInterface(self, 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:
+     - computeResourceId
+     - jobSubmissionInterfaceId
+    """
+    pass
+
+  def deleteDataMovementInterface(self, computeResourceId, dataMovementInterfaceId):
+    """
+    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:
+     - computeResourceId
+     - dataMovementInterfaceId
+    """
+    pass
+
+  def registerResourceJobManager(self, resourceJobManager):
+    """
+    Parameters:
+     - resourceJobManager
+    """
+    pass
+
+  def updateResourceJobManager(self, resourceJobManagerId, updatedResourceJobManager):
+    """
+    Parameters:
+     - resourceJobManagerId
+     - updatedResourceJobManager
+    """
+    pass
+
+  def getResourceJobManager(self, resourceJobManagerId):
+    """
+    Parameters:
+     - resourceJobManagerId
+    """
+    pass
+
+  def deleteResourceJobManager(self, resourceJobManagerId):
+    """
+    Parameters:
+     - resourceJobManagerId
+    """
+    pass
+
+  def deleteBatchQueue(self, computeResourceId, queueName):
+    """
+    Parameters:
+     - computeResourceId
+     - queueName
+    """
+    pass
+
+  def registerGatewayResourceProfile(self, 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:
+     - gatewayResourceProfile
+    """
+    pass
+
+  def getGatewayResourceProfile(self, gatewayID):
+    """
+    Fetch the given Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource
+
+    @return gatewayResourceProfile
+       Gateway Resource Profile Object.
+
+
+    Parameters:
+     - gatewayID
+    """
+    pass
+
+  def updateGatewayResourceProfile(self, 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:
+     - gatewayID
+     - gatewayResourceProfile
+    """
+    pass
+
+  def deleteGatewayResourceProfile(self, 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:
+     - gatewayID
+    """
+    pass
+
+  def addGatewayComputeResourcePreference(self, 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:
+     - gatewayID
+     - computeResourceId
+     - computeResourcePreference
+    """
+    pass
+
+  def getGatewayComputeResourcePreference(self, 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:
+     - gatewayID
+     - computeResourceId
+    """
+    pass
+
+  def getAllGatewayComputeResourcePreferences(self, 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:
+     - gatewayID
+    """
+    pass
+
+  def getAllGatewayComputeResources(self):
+    """
+    Fetch all gateway profiles registered
+
+    """
+    pass
+
+  def updateGatewayComputeResourcePreference(self, 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:
+     - gatewayID
+     - computeResourceId
+     - computeResourcePreference
+    """
+    pass
+
+  def deleteGatewayComputeResourcePreference(self, 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:
+     - gatewayID
+     - computeResourceId
+    """
+    pass
+
+  def getAllWorkflows(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    pass
+
+  def getWorkflow(self, workflowTemplateId):
+    """
+    Parameters:
+     - workflowTemplateId
+    """
+    pass
+
+  def deleteWorkflow(self, workflowTemplateId):
+    """
+    Parameters:
+     - workflowTemplateId
+    """
+    pass
+
+  def registerWorkflow(self, gatewayId, workflow):
+    """
+    Parameters:
+     - gatewayId
+     - workflow
+    """
+    pass
+
+  def updateWorkflow(self, workflowTemplateId, workflow):
+    """
+    Parameters:
+     - workflowTemplateId
+     - workflow
+    """
+    pass
+
+  def getWorkflowTemplateId(self, workflowName):
+    """
+    Parameters:
+     - workflowName
+    """
+    pass
+
+  def isWorkflowExistWithName(self, workflowName):
+    """
+    Parameters:
+     - workflowName
+    """
+    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):
+    """
+    Fetch Apache Airavata API version
+    """
+    self.send_getAPIVersion()
+    return self.recv_getAPIVersion()
+
+  def send_getAPIVersion(self):
+    self._oprot.writeMessageBegin('getAPIVersion', TMessageType.CALL, self._seqid)
+    args = getAPIVersion_args()
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAPIVersion(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getAPIVersion_result()
+    result.read(self._iprot)
+    self._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, "getAPIVersion failed: unknown result");
+
+  def addGateway(self, gateway):
+    """
+    Parameters:
+     - gateway
+    """
+    self.send_addGateway(gateway)
+    return self.recv_addGateway()
+
+  def send_addGateway(self, gateway):
+    self._oprot.writeMessageBegin('addGateway', TMessageType.CALL, self._seqid)
+    args = addGateway_args()
+    args.gateway = gateway
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_addGateway(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = addGateway_result()
+    result.read(self._iprot)
+    self._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, "addGateway failed: unknown result");
+
+  def updateGateway(self, gatewayId, updatedGateway):
+    """
+    Parameters:
+     - gatewayId
+     - updatedGateway
+    """
+    self.send_updateGateway(gatewayId, updatedGateway)
+    self.recv_updateGateway()
+
+  def send_updateGateway(self, gatewayId, updatedGateway):
+    self._oprot.writeMessageBegin('updateGateway', TMessageType.CALL, self._seqid)
+    args = updateGateway_args()
+    args.gatewayId = gatewayId
+    args.updatedGateway = updatedGateway
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateGateway(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = updateGateway_result()
+    result.read(self._iprot)
+    self._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
+    return
+
+  def getGateway(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    self.send_getGateway(gatewayId)
+    return self.recv_getGateway()
+
+  def send_getGateway(self, gatewayId):
+    self._oprot.writeMessageBegin('getGateway', TMessageType.CALL, self._seqid)
+    args = getGateway_args()
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGateway(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getGateway_result()
+    result.read(self._iprot)
+    self._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, "getGateway failed: unknown result");
+
+  def deleteGateway(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    self.send_deleteGateway(gatewayId)
+    return self.recv_deleteGateway()
+
+  def send_deleteGateway(self, gatewayId):
+    self._oprot.writeMessageBegin('deleteGateway', TMessageType.CALL, self._seqid)
+    args = deleteGateway_args()
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteGateway(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = deleteGateway_result()
+    result.read(self._iprot)
+    self._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, "deleteGateway failed: unknown result");
+
+  def getAllGateways(self):
+    self.send_getAllGateways()
+    return self.recv_getAllGateways()
+
+  def send_getAllGateways(self):
+    self._oprot.writeMessageBegin('getAllGateways', TMessageType.CALL, self._seqid)
+    args = getAllGateways_args()
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllGateways(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getAllGateways_result()
+    result.read(self._iprot)
+    self._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, "getAllGateways failed: unknown result");
+
+  def isGatewayExist(self, gatewayId):
+    """
+    Parameters:
+     - gatewayId
+    """
+    self.send_isGatewayExist(gatewayId)
+    return self.recv_isGatewayExist()
+
+  def send_isGatewayExist(self, gatewayId):
+    self._oprot.writeMessageBegin('isGatewayExist', TMessageType.CALL, self._seqid)
+    args = isGatewayExist_args()
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isGatewayExist(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = isGatewayExist_result()
+    result.read(self._iprot)
+    self._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, "isGatewayExist failed: unknown result");
+
+  def generateAndRegisterSSHKeys(self, gatewayId, userName):
+    """
+    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.
+
+    @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:
+     - gatewayId
+     - userName
+    """
+    self.send_generateAndRegisterSSHKeys(gatewayId, userName)
+    return self.recv_generateAndRegisterSSHKeys()
+
+  def send_generateAndRegisterSSHKeys(self, gatewayId, userName):
+    self._oprot.writeMessageBegin('generateAndRegisterSSHKeys', TMessageType.CALL, self._seqid)
+    args = generateAndRegisterSSHKeys_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_generateAndRegisterSSHKeys(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = generateAndRegisterSSHKeys_result()
+    result.read(self._iprot)
+    self._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 getSSHPubKey(self, airavataCredStoreToken):
+    """
+    Parameters:
+     - airavataCredStoreToken
+    """
+    self.send_getSSHPubKey(airavataCredStoreToken)
+    return self.recv_getSSHPubKey()
+
+  def send_getSSHPubKey(self, airavataCredStoreToken):
+    self._oprot.writeMessageBegin('getSSHPubKey', TMessageType.CALL, self._seqid)
+    args = getSSHPubKey_args()
+    args.airavataCredStoreToken = airavataCredStoreToken
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getSSHPubKey(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getSSHPubKey_result()
+    result.read(self._iprot)
+    self._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 getAllUserSSHPubKeys(self, userName):
+    """
+    Parameters:
+     - userName
+    """
+    self.send_getAllUserSSHPubKeys(userName)
+    return self.recv_getAllUserSSHPubKeys()
+
+  def send_getAllUserSSHPubKeys(self, userName):
+    self._oprot.writeMessageBegin('getAllUserSSHPubKeys', TMessageType.CALL, self._seqid)
+    args = getAllUserSSHPubKeys_args()
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllUserSSHPubKeys(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getAllUserSSHPubKeys_result()
+    result.read(self._iprot)
+    self._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, "getAllUserSSHPubKeys failed: unknown result");
+
+  def createProject(self, 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 workspaceModel
+
+
+    Parameters:
+     - gatewayId
+     - project
+    """
+    self.send_createProject(gatewayId, project)
+    return self.recv_createProject()
+
+  def send_createProject(self, gatewayId, project):
+    self._oprot.writeMessageBegin('createProject', TMessageType.CALL, self._seqid)
+    args = createProject_args()
+    args.gatewayId = gatewayId
+    args.project = project
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createProject(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = createProject_result()
+    result.read(self._iprot)
+    self._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, "createProject failed: unknown result");
+
+  def updateProject(self, projectId, updatedProject):
+    """
+    Update a Project
+
+
+    Parameters:
+     - projectId
+     - updatedProject
+    """
+    self.send_updateProject(projectId, updatedProject)
+    self.recv_updateProject()
+
+  def send_updateProject(self, projectId, updatedProject):
+    self._oprot.writeMessageBegin('updateProject', TMessageType.CALL, self._seqid)
+    args = updateProject_args()
+    args.projectId = projectId
+    args.updatedProject = updatedProject
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateProject(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = updateProject_result()
+    result.read(self._iprot)
+    self._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
+    return
+
+  def getProject(self, projectId):
+    """
+    Get a Project by ID
+
+
+    Parameters:
+     - projectId
+    """
+    self.send_getProject(projectId)
+    return self.recv_getProject()
+
+  def send_getProject(self, projectId):
+    self._oprot.writeMessageBegin('getProject', TMessageType.CALL, self._seqid)
+    args = getProject_args()
+    args.projectId = projectId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getProject(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getProject_result()
+    result.read(self._iprot)
+    self._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
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getProject failed: unknown result");
+
+  def deleteProject(self, projectId):
+    """
+    Parameters:
+     - projectId
+    """
+    self.send_deleteProject(projectId)
+    return self.recv_deleteProject()
+
+  def send_deleteProject(self, projectId):
+    self._oprot.writeMessageBegin('deleteProject', TMessageType.CALL, self._seqid)
+    args = deleteProject_args()
+    args.projectId = projectId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteProject(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = deleteProject_result()
+    result.read(self._iprot)
+    self._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
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteProject failed: unknown result");
+
+  def getAllUserProjects(self, gatewayId, userName):
+    """
+      * Get all Project by user
+      *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      *
+      * @param userName
+      *    The Project Object described in the workspaceModel
+      *
+    *
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    self.send_getAllUserProjects(gatewayId, userName)
+    return self.recv_getAllUserProjects()
+
+  def send_getAllUserProjects(self, gatewayId, userName):
+    self._oprot.writeMessageBegin('getAllUserProjects', TMessageType.CALL, self._seqid)
+    args = getAllUserProjects_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllUserProjects(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getAllUserProjects_result()
+    result.read(self._iprot)
+    self._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, "getAllUserProjects failed: unknown result");
+
+  def searchProjectsByProjectName(self, gatewayId, userName, projectName):
+    """
+    Get all Project for user by project name
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - projectName
+    """
+    self.send_searchProjectsByProjectName(gatewayId, userName, projectName)
+    return self.recv_searchProjectsByProjectName()
+
+  def send_searchProjectsByProjectName(self, gatewayId, userName, projectName):
+    self._oprot.writeMessageBegin('searchProjectsByProjectName', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectName_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.projectName = projectName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchProjectsByProjectName(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchProjectsByProjectName_result()
+    result.read(self._iprot)
+    self._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, "searchProjectsByProjectName failed: unknown result");
+
+  def searchProjectsByProjectDesc(self, gatewayId, userName, description):
+    """
+    Get all Project for user by project description
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    self.send_searchProjectsByProjectDesc(gatewayId, userName, description)
+    return self.recv_searchProjectsByProjectDesc()
+
+  def send_searchProjectsByProjectDesc(self, gatewayId, userName, description):
+    self._oprot.writeMessageBegin('searchProjectsByProjectDesc', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectDesc_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.description = description
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchProjectsByProjectDesc(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchProjectsByProjectDesc_result()
+    result.read(self._iprot)
+    self._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, "searchProjectsByProjectDesc failed: unknown result");
+
+  def searchExperimentsByName(self, gatewayId, userName, expName):
+    """
+    Search Experiments by experiment name
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - expName
+    """
+    self.send_searchExperimentsByName(gatewayId, userName, expName)
+    return self.recv_searchExperimentsByName()
+
+  def send_searchExperimentsByName(self, gatewayId, userName, expName):
+    self._oprot.writeMessageBegin('searchExperimentsByName', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByName_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.expName = expName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperimentsByName(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchExperimentsByName_result()
+    result.read(self._iprot)
+    self._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, "searchExperimentsByName failed: unknown result");
+
+  def searchExperimentsByDesc(self, gatewayId, userName, description):
+    """
+    Search Experiments by experiment name
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - description
+    """
+    self.send_searchExperimentsByDesc(gatewayId, userName, description)
+    return self.recv_searchExperimentsByDesc()
+
+  def send_searchExperimentsByDesc(self, gatewayId, userName, description):
+    self._oprot.writeMessageBegin('searchExperimentsByDesc', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByDesc_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.description = description
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperimentsByDesc(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchExperimentsByDesc_result()
+    result.read(self._iprot)
+    self._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, "searchExperimentsByDesc failed: unknown result");
+
+  def searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+    """
+    Search Experiments by application id
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - applicationId
+    """
+    self.send_searchExperimentsByApplication(gatewayId, userName, applicationId)
+    return self.recv_searchExperimentsByApplication()
+
+  def send_searchExperimentsByApplication(self, gatewayId, userName, applicationId):
+    self._oprot.writeMessageBegin('searchExperimentsByApplication', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByApplication_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.applicationId = applicationId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperimentsByApplication(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchExperimentsByApplication_result()
+    result.read(self._iprot)
+    self._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, "searchExperimentsByApplication failed: unknown result");
+
+  def searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+    """
+    Search Experiments by experiment status
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - experimentState
+    """
+    self.send_searchExperimentsByStatus(gatewayId, userName, experimentState)
+    return self.recv_searchExperimentsByStatus()
+
+  def send_searchExperimentsByStatus(self, gatewayId, userName, experimentState):
+    self._oprot.writeMessageBegin('searchExperimentsByStatus', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByStatus_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.experimentState = experimentState
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperimentsByStatus(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchExperimentsByStatus_result()
+    result.read(self._iprot)
+    self._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, "searchExperimentsByStatus failed: unknown result");
+
+  def searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+    """
+    Search Experiments by experiment status
+
+
+    Parameters:
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+    """
+    self.send_searchExperimentsByCreationTime(gatewayId, userName, fromTime, toTime)
+    return self.recv_searchExperimentsByCreationTime()
+
+  def send_searchExperimentsByCreationTime(self, gatewayId, userName, fromTime, toTime):
+    self._oprot.writeMessageBegin('searchExperimentsByCreationTime', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByCreationTime_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.fromTime = fromTime
+    args.toTime = toTime
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperimentsByCreationTime(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = searchExperimentsByCreationTime_result()
+    result.read(self._iprot)
+    self._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, "searchExperimentsByCreationTime failed: unknown result");
+
+  def getAllExperimentsInProject(self, projectId):
+    """
+    Get all Experiments within a Project
+
+
+    Parameters:
+     - projectId
+    """
+    self.send_getAllExperimentsInProject(projectId)
+    return self.recv_getAllExperimentsInProject()
+
+  def send_getAllExperimentsInProject(self, projectId):
+    self._oprot.writeMessageBegin('getAllExperimentsInProject', TMessageType.CALL, self._seqid)
+    args = getAllExperimentsInProject_args()
+    args.projectId = projectId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllExperimentsInProject(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getAllExperimentsInProject_result()
+    result.read(self._iprot)
+    self._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
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllExperimentsInProject failed: unknown result");
+
+  def getAllUserExperiments(self, gatewayId, userName):
+    """
+    Get all Experiments by user
+
+
+    Parameters:
+     - gatewayId
+     - userName
+    """
+    self.send_getAllUserExperiments(gatewayId, userName)
+    return self.recv_getAllUserExperiments()
+
+  def send_getAllUserExperiments(self, gatewayId, userName):
+    self._oprot.writeMessageBegin('getAllUserExperiments', TMessageType.CALL, self._seqid)
+    args = getAllUserExperiments_args()
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllUserExperiments(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getAllUserExperiments_result()
+    result.read(self._iprot)
+    self._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, "getAllUserExperiments failed: unknown result");
+
+  def createExperiment(self, gatewayId, experiment):
+    """
+    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+      but inferred from the authentication 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 basicExperimentMetadata
+       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 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:
+     - gatewayId
+     - experiment
+    """
+    self.send_createExperiment(gatewayId, experiment)
+    return self.recv_createExperiment()
+
+  def send_createExperiment(self, gatewayId, experiment):
+    self._oprot.writeMessageBegin('createExperiment', TMessageType.CALL, self._seqid)
+    args = createExperiment_args()
+    args.gatewayId = gatewayId
+    args.experiment = experiment
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createExperiment(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = createExperiment_result()
+    result.read(self._iprot)
+    self._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, "createExperiment failed: unknown result");
+
+  def getExperiment(self, airavataExperimentId):
+    """
+    Fetch previously created experiment metadata.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return experimentMetada
+      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:
+     - airavataExperimentId
+    """
+    self.send_getExperiment(airavataExperimentId)
+    return self.recv_getExperiment()
+
+  def send_getExperiment(self, airavataExperimentId):
+    self._oprot.writeMessageBegin('getExperiment', TMessageType.CALL, self._seqid)
+    args = getExperiment_args()
+    args.airavataExperimentId = airavataExperimentId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getExperiment(self):
+    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(self._iprot)
+      self._iprot.readMessageEnd()
+      raise x
+    result = getExperiment_result()
+    result.read(self._iprot)
+    self._iprot.readMessageEnd()
+    if result.success is not None:
+ 

<TRUNCATED>