You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/08/08 18:14:19 UTC

[2/7] airavata git commit: adding registry server module

http://git-wip-us.apache.org/repos/asf/airavata/blob/2d9fd253/thrift-interface-descriptions/component-cpis/registry-api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/component-cpis/registry-api.thrift b/thrift-interface-descriptions/component-cpis/registry-api.thrift
new file mode 100644
index 0000000..825b30a
--- /dev/null
+++ b/thrift-interface-descriptions/component-cpis/registry-api.thrift
@@ -0,0 +1,2072 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+/*
+ * Component Programming Interface definition for Apache Airavata Registry Service.
+ *
+*/
+
+include "../data-models/airavata_data_models.thrift"
+include "../data-models/experiment-catalog-models/status_models.thrift"
+include "../data-models/experiment-catalog-models/job_model.thrift"
+include "../data-models/experiment-catalog-models/experiment_model.thrift"
+include "../data-models/experiment-catalog-models/workspace_model.thrift"
+include "../data-models/experiment-catalog-models/scheduling_model.thrift"
+include "../data-models/app-catalog-models/application_io_models.thrift"
+include "../data-models/app-catalog-models/application_deployment_model.thrift"
+include "../data-models/app-catalog-models/application_interface_model.thrift"
+include "../data-models/resource-catalog-models/compute_resource_model.thrift"
+include "../data-models/resource-catalog-models/storage_resource_model.thrift"
+include "../data-models/resource-catalog-models/gateway_resource_profile_model.thrift"
+include "../data-models/resource-catalog-models/data_movement_models.thrift"
+include "../data-models/workflow-models/workflow_data_model.thrift"
+include "../data-models/replica-catalog-models/replica_catalog_models.thrift"
+
+include "registry_api_errors.thrift"
+
+namespace java org.apache.airavata.registry.api
+
+const string REGISTRY_API_VERSION = "0.17.0"
+
+service RegistryService {
+    /**
+       * Fetch Apache Registry API version
+       **/
+      string getAPIVersion()
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+     /**
+     * Verify if User Exists within Airavata.
+     *
+     * @param gatewayId
+     *
+     *  @param userName
+     *
+     * @return true/false
+     *
+     **/
+      bool isUserExists (1: required string gatewayId,
+                         2: required string userName)
+              throws (1: registry_api_errors.RegistryServiceException rse)
+
+       /**
+       * Register a Gateway with Airavata.
+       *
+       * @param gateway
+       *    The gateway data model.
+       *
+       * @return gatewayId
+       *   Th unique identifier of the  newly registered gateway.
+       *
+       **/
+      string addGateway(1: required workspace_model.Gateway gateway)
+             throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+      /**
+         * Get all users in the gateway
+         *
+         * @param gatewayId
+         *    The gateway data model.
+         *
+         * @return users
+         *   list of usernames of the users in the gateway
+         *
+         **/
+      list<string> getAllUsersInGateway(1: required string gatewayId)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+       /**
+       * Update previously registered Gateway metadata.
+       *
+       * @param gatewayId
+       *    The gateway Id of the Gateway which require an update.
+       *
+       * @return gateway
+       *    Modified gateway obejct.
+       *
+       * @exception AiravataClientException
+       *
+       **/
+
+      bool updateGateway(1: required string gatewayId, 2: required workspace_model.Gateway updatedGateway)
+             throws (1: registry_api_errors.RegistryServiceException rse)
+
+        /**
+        * Get Gateway details by providing gatewayId
+        *
+        * @param gatewayId
+        *    The gateway Id of the Gateway.
+        *
+        * @return gateway
+        *    Gateway obejct.
+        *
+        **/
+
+      workspace_model.Gateway getGateway(1: required string gatewayId)
+               throws (1: registry_api_errors.RegistryServiceException rse)
+
+        /**
+        * 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.
+        *
+        **/
+
+      bool deleteGateway(1: required string gatewayId)
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+        /**
+        * Get All the Gateways Connected to Airavata.
+        **/
+
+      list<workspace_model.Gateway> getAllGateways()
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+        /**
+        * 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.
+        *
+        **/
+      bool isGatewayExist(1: required string gatewayId)
+               throws (1: registry_api_errors.RegistryServiceException rse)
+
+      /**
+        * API methods to retrieve notifications
+      **/
+       string createNotification(1: required workspace_model.Notification notification)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+       bool updateNotification(1: required workspace_model.Notification notification)
+               throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+      bool deleteNotification(1: required string gatewayId, 2: required string notificationId)
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+      workspace_model.Notification getNotification(1: required string gatewayId, 2: required string notificationId)
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+      list<workspace_model.Notification> getAllNotifications(1: required string gatewayId)
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+      /**
+         *
+         * 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.
+         *
+         **/
+        string createProject (1: required string gatewayId,
+                              2: required workspace_model.Project project)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+         /**
+         *
+         * Update an Existing Project
+         *
+         * @param projectId
+         *    The projectId of the project needed an update.
+         *
+         * @return void
+         *    Currently this does not return any value.
+         *
+         **/
+        void updateProject (1: required string projectId,
+                            2: required workspace_model.Project updatedProject)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+         /**
+         *
+         * 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.
+         *
+         **/
+        workspace_model.Project getProject (1: required string projectId)
+              throws (1: registry_api_errors.RegistryServiceException rse)
+
+         /**
+         *
+         * 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.
+         *
+         **/
+        bool deleteProject (1: required string projectId)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+         /**
+         *
+         * 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.
+         *
+         **/
+        list<workspace_model.Project> getUserProjects(1: required string gatewayId,
+                                                         2: required string userName,
+                                                         3: required i32 limit,
+                                                         4: required i32 offset)
+              throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+          /**
+          *
+          * 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.
+          *
+          **/
+        list<workspace_model.Project> searchProjects(
+                                    1: required string gatewayId,
+                                    2: required string userName,
+                                    3: map<experiment_model.ProjectSearchFields, string> filters,
+                                    4: required i32 limit,
+                                    5: required i32 offset)
+                        throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+
+        /**
+           * 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.
+           *
+           **/
+
+            list<experiment_model.ExperimentSummaryModel> searchExperiments(1: required string gatewayId,
+                                    2: required string userName,
+                                    3: map<experiment_model.ExperimentSearchFields, string> filters,
+                                    4: required i32 limit,
+                                    5: required i32 offset)
+                        throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+             **/
+            experiment_model.ExperimentStatistics getExperimentStatistics(1: required string gatewayId,
+                                    2: required i64 fromTime,
+                                    3: required i64 toTime)
+                        throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+          /**
+           *
+           * 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.
+           *
+           **/
+          list<experiment_model.ExperimentModel> getExperimentsInProject(1: required string projectId,
+                          2: required i32 limit,
+                          3: required i32 offset)
+                  throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+           *
+           * 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.
+           *
+           **/
+          list<experiment_model.ExperimentModel> getUserExperiments(1: required string gatewayId,
+                                2: required string userName,
+                                3: required i32 limit,
+                                4: required i32 offset)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+             *
+             * 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.
+             *
+           **/
+          string createExperiment(1: required string gatewayId,
+                                  2: required experiment_model.ExperimentModel experiment)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+          /**
+          *
+          * 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.
+          *
+          **/
+          bool deleteExperiment(1: required string experimentId)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+          /**
+           *
+           * 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.
+           *
+         **/
+          experiment_model.ExperimentModel getExperiment(1: required string airavataExperimentId)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+          /**
+           *
+           * 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.
+           *
+          */
+          experiment_model.ExperimentModel getDetailedExperimentTree(1: required string airavataExperimentId)
+              throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+          /**
+           *
+           * 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.
+           *
+          */
+          void updateExperiment(1: required string airavataExperimentId,
+                                2: required experiment_model.ExperimentModel experiment)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+          void updateExperimentConfiguration(1: required string airavataExperimentId,
+                                             2: required experiment_model.UserConfigurationDataModel userConfiguration)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+          void updateResourceScheduleing(1: required string airavataExperimentId,
+                                         2: required scheduling_model.ComputationalResourceSchedulingModel resourceScheduling)
+            throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+         /**
+           *
+           * 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.
+           *
+           **/
+            status_models.ExperimentStatus getExperimentStatus(1: required string airavataExperimentId)
+               throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+           *
+           * 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.
+           *
+           **/
+           list<application_io_models.OutputDataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
+               throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+           *
+           * 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.
+           *
+           **/
+            list<application_io_models.OutputDataObjectType> getIntermediateOutputs (1: required string airavataExperimentId)
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+           *
+           * 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
+           *
+           **/
+           map<string, status_models.JobStatus> getJobStatuses(1: required string airavataExperimentId)
+                       throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+           *
+           * 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.
+           *
+           **/
+           list<job_model.JobModel> getJobDetails(1: required string airavataExperimentId)
+                         throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+          /*
+           *
+           * API definitions for App Catalog related operations
+           *
+          */
+
+          /**
+             *
+             * 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.
+             *
+            */
+            string registerApplicationModule(1: required string gatewayId,
+                                  2: required application_deployment_model.ApplicationModule applicationModule)
+              	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * Fetch a Application Module.
+             *
+             * @param appModuleId
+             *   The unique identifier of the application module required
+             *
+             * @return applicationModule
+             *   Returns an Application Module Object.
+             *
+            */
+            application_deployment_model.ApplicationModule getApplicationModule(1: required string appModuleId)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+            */
+            bool updateApplicationModule(1: required string appModuleId,
+                      2: required application_deployment_model.ApplicationModule applicationModule)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+            */
+            list<application_deployment_model.ApplicationModule> getAllAppModules (1: required string gatewayId)
+                  throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * Delete an Application Module.
+             *
+             * @param appModuleId
+             *   The identifier of the Application Module to be deleted.
+             *
+             * @return status
+             *   Returns a success/failure of the deletion.
+             *
+            */
+            bool deleteApplicationModule(1: required string appModuleId)
+                   	throws (1: registry_api_errors.RegistryServiceException rse)
+
+          /*
+           *
+           * Application Deployment
+           *  Registers a deployment of an Application Module on a Compute Resource.
+           *
+          */
+
+            /**
+             *
+             * 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.
+             *
+            */
+            string registerApplicationDeployment(1: required string gatewayId,
+                          2: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
+              	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * Fetch a Application Deployment.
+             *
+             * @param appDeploymentId
+             *   The identifier for the requested application module
+             *
+             * @return applicationDeployment
+             *   Returns a application Deployment Object.
+             *
+            */
+            application_deployment_model.ApplicationDeploymentDescription getApplicationDeployment(1: required string appDeploymentId)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+            */
+            bool updateApplicationDeployment(1: required string appDeploymentId,
+                      2: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * Delete an Application Deployment.
+             *
+             * @param appDeploymentId
+             *   The unique identifier of application deployment to be deleted.
+             *
+             * @return status
+             *   Returns a success/failure of the deletion.
+             *
+            */
+            bool deleteApplicationDeployment(1: required string appDeploymentId)
+                   	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+            */
+            list<application_deployment_model.ApplicationDeploymentDescription> getAllApplicationDeployments(1: required string gatewayId)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+            list<string> getAppModuleDeployedResources(1: required string appModuleId)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+          /*
+           *
+           * Application Interface
+           *
+          */
+
+            /**
+             *
+             * 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.
+             *
+            */
+            string registerApplicationInterface(1: required string gatewayId,
+                          2: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
+              	throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+         /**
+            *
+            * Fetch an Application Interface.
+            *
+            * @param appInterfaceId
+            *   The identifier for the requested application interface.
+            *
+            * @return applicationInterface
+            *   Returns an application Interface Object.
+            *
+           */
+           application_interface_model.ApplicationInterfaceDescription getApplicationInterface(1: required string appInterfaceId)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * 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.
+            *
+           */
+           bool updateApplicationInterface(1: required string appInterfaceId,
+                     2: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * 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.
+            *
+           */
+           bool deleteApplicationInterface(1: required string appInterfaceId)
+                  	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * Fetch name and ID of  Application Interface documents.
+            *
+            *
+            * @return map<applicationId, applicationInterfaceNames>
+            *   Returns a list of application interfaces with corresponsing ID's
+            *
+           */
+           map<string, string> getAllApplicationInterfaceNames (1: required string gatewayId)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * 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).
+            *
+           */
+           list<application_interface_model.ApplicationInterfaceDescription> getAllApplicationInterfaces (1: required string gatewayId)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * 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.
+            *
+           */
+           list<application_io_models.InputDataObjectType> getApplicationInputs(1: required string appInterfaceId)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * 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.
+            *
+           */
+           list<application_io_models.OutputDataObjectType> getApplicationOutputs(1: required string appInterfaceId)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+            *
+            * 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.
+            *
+           */
+           map<string, string> getAvailableAppInterfaceComputeResources(1: required string appInterfaceId)
+               	throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+
+          /*
+           *
+           * Compute Resource
+           *
+          */
+          /**
+             * 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.
+             *
+            */
+            string registerComputeResource(1: required compute_resource_model.ComputeResourceDescription computeResourceDescription)
+              	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * Fetch the given Compute Resource.
+             *
+             * @param computeResourceId
+             *   The identifier for the requested compute resource
+             *
+             * @return computeResourceDescription
+             *    Compute Resource Object created from the datamodel..
+             *
+            */
+            compute_resource_model.ComputeResourceDescription getComputeResource(1: required string computeResourceId)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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..
+             *
+            */
+            map<string, string> getAllComputeResourceNames()
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+
+            bool updateComputeResource(1: required string computeResourceId,
+                      2: required compute_resource_model.ComputeResourceDescription computeResourceDescription)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+            bool deleteComputeResource(1: required string computeResourceId)
+                   	throws (1: registry_api_errors.RegistryServiceException rse)
+
+          /*
+           *
+           * Storage Resource
+           *
+          */
+
+            /**
+             * 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.
+             *
+            */
+
+            string registerStorageResource(1: required storage_resource_model.StorageResourceDescription storageResourceDescription)
+              	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * Fetch the given Storage Resource.
+             *
+             * @param storageResourceId
+             *   The identifier for the requested storage resource
+             *
+             * @return storageResourceDescription
+             *    Storage Resource Object created from the datamodel..
+             *
+            */
+
+            storage_resource_model.StorageResourceDescription getStorageResource(1: required string storageResourceId)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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..
+             *
+            */
+
+            map<string, string> getAllStorageResourceNames()
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+
+            bool updateStorageResource(1: required string storageResourceId,
+                      2: required storage_resource_model.StorageResourceDescription storageResourceDescription)
+                	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+
+            bool deleteStorageResource(1: required string storageResourceId)
+                   	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+
+            string addLocalSubmissionDetails(1: required string computeResourceId,
+                      2: required i32 priorityOrder,
+                      3: required compute_resource_model.LOCALSubmission localSubmission)
+
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+
+            bool updateLocalSubmissionDetails(1: required string jobSubmissionInterfaceId,
+                      2: required compute_resource_model.LOCALSubmission localSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+            * This method returns localJobSubmission object
+            * @param jobSubmissionInterfaceId
+            *   The identifier of the JobSubmission Interface to be retrieved.
+            *  @return LOCALSubmission instance
+            **/
+
+            compute_resource_model.LOCALSubmission getLocalJobSubmission(1: required string jobSubmissionId)
+                     throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+
+            /**
+             * 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.
+             *
+            */
+
+            string addSSHJobSubmissionDetails(1: required string computeResourceId,
+                      2: required i32 priorityOrder,
+                      3: required compute_resource_model.SSHJobSubmission sshJobSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             * 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.
+             *
+            */
+
+
+            string addSSHForkJobSubmissionDetails(1: required string computeResourceId,
+                      2: required i32 priorityOrder,
+                      3: required compute_resource_model.SSHJobSubmission sshJobSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+              * This method returns SSHJobSubmission object
+              * @param jobSubmissionInterfaceId
+              *   The identifier of the JobSubmission Interface to be retrieved.
+              *  @return SSHJobSubmission instance
+              **/
+
+              compute_resource_model.SSHJobSubmission getSSHJobSubmission(1: required string jobSubmissionId)
+                        throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+
+            /**
+             *
+             * 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.
+             *
+            */
+            string addUNICOREJobSubmissionDetails(1: required string computeResourceId,
+                      2: required i32 priorityOrder,
+                      3: required compute_resource_model.UnicoreJobSubmission unicoreJobSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+            /**
+              *
+              * This method returns UnicoreJobSubmission object
+              *
+              * @param jobSubmissionInterfaceId
+              *   The identifier of the JobSubmission Interface to be retrieved.
+              *  @return UnicoreJobSubmission instance
+              *
+            **/
+            compute_resource_model.UnicoreJobSubmission getUnicoreJobSubmission(1: required string jobSubmissionId)
+                         throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+           /**
+             *
+             * 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.
+             *
+          **/
+           string addCloudJobSubmissionDetails(1: required string computeResourceId,
+                      2: required i32 priorityOrder,
+                      3: required compute_resource_model.CloudJobSubmission cloudSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+           /**
+              *
+              * This method returns cloudJobSubmission object
+              * @param jobSubmissionInterfaceI
+                  *   The identifier of the JobSubmission Interface to be retrieved.
+              *  @return CloudJobSubmission instance
+           **/
+           compute_resource_model.CloudJobSubmission getCloudJobSubmission(1: required string jobSubmissionId)
+                            throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+            */
+            bool updateSSHJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+                      2: required compute_resource_model.SSHJobSubmission sshJobSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+          /**
+             *
+             * 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.
+             *
+            */
+            bool updateCloudJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+                      2: required compute_resource_model.CloudJobSubmission sshJobSubmission)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+             /**
+             *
+             * 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.
+             *
+             **/
+            bool updateUnicoreJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+                        2: required compute_resource_model.UnicoreJobSubmission unicoreJobSubmission)
+              	throws (1: registry_api_errors.RegistryServiceException rse)
+
+             /**
+             *
+             * 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.
+             *
+             **/
+            string addLocalDataMovementDetails(1: required string productUri,
+                      2: required data_movement_models.DMType dataMoveType,
+                      3: required i32 priorityOrder,
+                      4: required data_movement_models.LOCALDataMovement localDataMovement)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+             /**
+             *
+             * 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.
+             *
+             **/
+            bool updateLocalDataMovementDetails(1: required string dataMovementInterfaceId,
+                      2: required data_movement_models.LOCALDataMovement localDataMovement)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+            *
+            * This method returns local datamovement object.
+            *
+            * @param dataMovementId
+            *   The identifier of the datamovement Interface to be retrieved.
+            *
+            *  @return LOCALDataMovement instance
+            *
+            **/
+            data_movement_models.LOCALDataMovement getLocalDataMovement(1: required string dataMovementId)
+                              throws (1: registry_api_errors.RegistryServiceException rse)
+
+            /**
+             *
+             * 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.
+             *
+            */
+            string addSCPDataMovementDetails(1: required string productUri,
+                      2: required data_movement_models.DMType dataMoveType,
+                      3: required i32 priorityOrder,
+                      4: required data_movement_models.SCPDataMovement scpDataMovement)
+            	throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+            /**
+               *
+               * 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.
+               *
+              */
+              bool updateSCPDataMovementDetails(1: required string dataMovementInterfaceId,
+                        2: required data_movement_models.SCPDataMovement scpDataMovement)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+                /**
+                * This method returns SCP datamovement object
+                *
+                * @param dataMovementId
+                *   The identifier of the datamovement Interface to be retrieved.
+                *
+                * @return SCPDataMovement instance
+                *
+                **/
+              data_movement_models.SCPDataMovement getSCPDataMovement(1: required string dataMovementId)
+                                throws (1: registry_api_errors.RegistryServiceException rse)
+
+             /**
+               *
+               * 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.
+               *
+              */
+             string addUnicoreDataMovementDetails(1: required string productUri,
+                          2: required data_movement_models.DMType dataMoveType,
+                          3: required i32 priorityOrder,
+                          4: required data_movement_models.UnicoreDataMovement unicoreDataMovement)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               *
+               * 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.
+               *
+               **/
+
+             bool updateUnicoreDataMovementDetails(1: required string dataMovementInterfaceId,
+                         2: required data_movement_models.UnicoreDataMovement unicoreDataMovement)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+                /**
+                *
+                * This method returns UNICORE datamovement object
+                *
+                * @param dataMovementId
+                *   The identifier of the datamovement Interface to be retrieved.
+                *
+                * @return UnicoreDataMovement instance
+                *
+                **/
+
+             data_movement_models.UnicoreDataMovement getUnicoreDataMovement(1: required string dataMovementId)
+                                throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               *
+               * 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.
+               *
+               **/
+
+              string addGridFTPDataMovementDetails(1: required string productUri,
+                        2: required data_movement_models.DMType dataMoveType,
+                        3: required i32 priorityOrder,
+                        4: required data_movement_models.GridFTPDataMovement gridFTPDataMovement)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               * 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.
+               *
+               **/
+
+              bool updateGridFTPDataMovementDetails(1: required string dataMovementInterfaceId,
+                        2: required data_movement_models.GridFTPDataMovement gridFTPDataMovement)
+               throws (1: registry_api_errors.RegistryServiceException rse)
+
+                /**
+                * This method returns GridFTP datamovement object
+                *
+                * @param dataMovementId
+                *   The identifier of the datamovement Interface to be retrieved.
+                *
+                *  @return GridFTPDataMovement instance
+                *
+                **/
+
+              data_movement_models.GridFTPDataMovement getGridFTPDataMovement(1: required string dataMovementId)
+                                throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+               /**
+               * 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.
+               *
+               **/
+
+              bool changeJobSubmissionPriority(1: required string jobSubmissionInterfaceId,
+                        2: required i32 newPriorityOrder)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               * 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.
+               *
+               **/
+
+              bool changeDataMovementPriority(1: required string dataMovementInterfaceId,
+                        2: required i32 newPriorityOrder)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+
+              bool changeJobSubmissionPriorities(1: required map<string, i32> jobSubmissionPriorityMap)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               * 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.
+               *
+               **/
+
+              bool changeDataMovementPriorities(1: required map<string, i32> dataMovementPriorityMap)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               * 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.
+               *
+               **/
+
+              bool deleteJobSubmissionInterface(1: required string computeResourceId,
+                        2: required string jobSubmissionInterfaceId)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+               /**
+               * 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.
+               *
+               **/
+
+              bool deleteDataMovementInterface(1: required string productUri,
+                        2: required string dataMovementInterfaceId,
+                        3: required data_movement_models.DMType dataMoveType,)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+             string registerResourceJobManager(1: required compute_resource_model.ResourceJobManager resourceJobManager)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+             bool updateResourceJobManager(1: required string resourceJobManagerId,
+                        2: required compute_resource_model.ResourceJobManager updatedResourceJobManager)
+                 throws (1: registry_api_errors.RegistryServiceException rse)
+
+             compute_resource_model.ResourceJobManager getResourceJobManager(1: required string resourceJobManagerId)
+                  throws (1: registry_api_errors.RegistryServiceException rse)
+
+             bool deleteResourceJobManager(1: required string resourceJobManagerId)
+                   throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+               **/
+
+              bool deleteBatchQueue(1: required string computeResourceId, 2: required string queueName)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+            /*
+             * Gateway Resource Profile
+             *
+            */
+
+              /**
+               * 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.
+               *
+              */
+              string registerGatewayResourceProfile(1: required gateway_resource_profile_model.GatewayResourceProfile gatewayResourceProfile)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * Fetch the given Gateway Resource Profile.
+               *
+               * @param gatewayID
+               *   The identifier for the requested gateway resource.
+               *
+               * @return gatewayResourceProfile
+               *    Gateway Resource Profile Object.
+               *
+              */
+
+              gateway_resource_profile_model.GatewayResourceProfile getGatewayResourceProfile(1: required string gatewayID)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+
+              bool updateGatewayResourceProfile(1: required string gatewayID,
+                        2: required gateway_resource_profile_model.GatewayResourceProfile gatewayResourceProfile)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+
+              bool deleteGatewayResourceProfile(1: required string gatewayID)
+                        throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+              bool addGatewayComputeResourcePreference(1: required string gatewayID,
+                        2: required string computeResourceId,
+                        3: required gateway_resource_profile_model.ComputeResourcePreference computeResourcePreference)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+              bool addGatewayStoragePreference(1: required string gatewayID,
+                          2: required string storageResourceId,
+                          3: required gateway_resource_profile_model.StoragePreference storagePreference)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+              /**
+               *
+               * 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.
+               *
+              */
+              gateway_resource_profile_model.ComputeResourcePreference getGatewayComputeResourcePreference(1: required string gatewayID,
+                        2: required string computeResourceId)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               *
+               * 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.
+               *
+              */
+              gateway_resource_profile_model.StoragePreference getGatewayStoragePreference(1: required string gatewayID,
+                          2: required string storageResourceId)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               *
+               * 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.
+               *
+              */
+              list<gateway_resource_profile_model.ComputeResourcePreference>
+                        getAllGatewayComputeResourcePreferences(1: required string gatewayID)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+              * 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.
+              *
+             */
+
+              list<gateway_resource_profile_model.StoragePreference>
+                          getAllGatewayStoragePreferences(1: required string gatewayID)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+              *
+              * Fetch all Gateway Profiles registered
+              *
+              * @return GatewayResourceProfile
+              *   Returns all the GatewayResourcePrifle list object.
+              *
+              **/
+              list<gateway_resource_profile_model.GatewayResourceProfile>
+                          getAllGatewayResourceProfiles()
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+              bool updateGatewayComputeResourcePreference(1: required string gatewayID,
+                        2: required string computeResourceId,
+                        3: required gateway_resource_profile_model.ComputeResourcePreference computeResourcePreference)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+                /**
+                 * 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.
+                 *
+                */
+
+              bool updateGatewayStoragePreference(1: required string gatewayID,
+                          2: required string storageId,
+                          3: required gateway_resource_profile_model.StoragePreference storagePreference)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+              /**
+               * 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.
+               *
+              */
+              bool deleteGatewayComputeResourcePreference(1: required string gatewayID,
+                        2: required string computeResourceId)
+                throws (1: registry_api_errors.RegistryServiceException rse)
+
+
+              /**
+               * 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.
+               *
+              */
+
+              bool deleteGatewayStoragePreference(1: required string gatewayID,
+                          2: required string storageId)
+                    throws (1: registry_api_errors.RegistryServiceException rse)
+
+             /**
+                * Delete the Storage Resource Preference of a registered gateway profile.
+                *
+                * @

<TRUNCATED>