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 2016/09/10 02:38:56 UTC

airavata git commit: modularizing app catalog

Repository: airavata
Updated Branches:
  refs/heads/api-multiplexing 79bdeb123 -> f56d67775


modularizing app catalog


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f56d6777
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f56d6777
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f56d6777

Branch: refs/heads/api-multiplexing
Commit: f56d6777526d1c17939df7d756acb1131a0ffdc6
Parents: 79bdeb1
Author: Suresh Marru <sm...@apache.org>
Authored: Fri Sep 9 22:38:27 2016 -0400
Committer: Suresh Marru <sm...@apache.org>
Committed: Fri Sep 9 22:38:31 2016 -0400

----------------------------------------------------------------------
 .../airavata-apis/airavata_api.thrift           | 549 -------------------
 .../airavata-apis/app_catalog.thrift            | 498 +++++++++++++++++
 .../airavata-apis/credential_store.thrift       | 175 ++++++
 .../airavata-apis/resource_catalog.thrift       |   0
 4 files changed, 673 insertions(+), 549 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f56d6777/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index a9b36d6..4c45acd 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -255,129 +255,6 @@ service Airavata {
 
 
    /**
-   * 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.
-   *
-   **/
-   string generateAndRegisterSSHKeys (1: required security_model.AuthzToken authzToken,
-                    2: required string gatewayId,
-                    3: required string userName)
-           throws (1: airavata_errors.InvalidRequestException ire,
-                   2: airavata_errors.AiravataClientException ace,
-                   3: airavata_errors.AiravataSystemException ase)
-
-
- /**
-   * Generate and Register Username PWD Pair with Airavata Credential Store.
-   *
-   * @param gatewayId
-   *    The identifier for the requested Gateway.
-   *
-   * @param portalUserName
-   *    The User for which the credential should be registered. For community accounts, this user is the name of the
-   *    community user name. For computational resources, this user name need not be the same user name on resoruces.
-   *
-   * @param loginUserName
-   *
-   * @param password
-   *
-   * @return airavataCredStoreToken
-   *   An SSH Key pair is generated and stored in the credential store and associated with users or community account
-   *   belonging to a Gateway.
-   *
-   **/
-  string registerPwdCredential (1: required security_model.AuthzToken authzToken,
-                      2: required string gatewayId,
-                      3: required string portalUserName,
-                      4: required string loginUserName,
-                      5: required string password,
-                      6: required string description)
-             throws (1: airavata_errors.InvalidRequestException ire,
-                     2: airavata_errors.AiravataClientException ace,
-                     3: airavata_errors.AiravataSystemException ase)
-
-   /**
-   * Get a Public Key by Providing the Token
-   *
-   * @param CredStoreToken
-   *    Credential Store Token which you want to find the Public Key for.
-   *
-   * @param gatewayId
-   *    This is the unique identifier of your gateway where the token and public key was generated from.
-   *
-   * @return publicKey
-   *
-   **/
-   string getSSHPubKey (1: required security_model.AuthzToken authzToken,
-                        2: required string airavataCredStoreToken,
-                        3: required string gatewayId)
-           throws (1: airavata_errors.InvalidRequestException ire,
-                   2: airavata_errors.AiravataClientException ace,
-                   3: airavata_errors.AiravataSystemException ase)
-
-   /**
-   *
-   * Get all Public Keys of the Gateway
-   *
-   * @param CredStoreToken
-   *    Credential Store Token which you want to find the Public Key for.
-   *
-   * @param gatewayId
-   *    This is the unique identifier of your gateway where the token and public key was generated from.
-   *
-   * @return publicKey
-   *
-   **/
-  map<string, string> getAllGatewaySSHPubKeys (1: required security_model.AuthzToken authzToken,
-                                               2: required string gatewayId)
-             throws (1: airavata_errors.InvalidRequestException ire,
-                     2: airavata_errors.AiravataClientException ace,
-                     3: airavata_errors.AiravataSystemException ase)
-
-
-  map<string, string> getAllGatewayPWDCredentials (1: required security_model.AuthzToken authzToken,
-                                                 2: required string gatewayId)
-               throws (1: airavata_errors.InvalidRequestException ire,
-                       2: airavata_errors.AiravataClientException ace,
-                       3: airavata_errors.AiravataSystemException ase)
-
-    /**
-    *
-    * 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 deleteSSHPubKey (1: required security_model.AuthzToken authzToken,
-                          2: required string airavataCredStoreToken,
-                          3: required string gatewayId)
-             throws (1: airavata_errors.InvalidRequestException ire,
-                     2: airavata_errors.AiravataClientException ace,
-                     3: airavata_errors.AiravataSystemException ase)
-
-
-  bool deletePWDCredential (1: required security_model.AuthzToken authzToken,
-                            2: required string airavataCredStoreToken,
-                            3: required string gatewayId)
-               throws (1: airavata_errors.InvalidRequestException ire,
-                       2: airavata_errors.AiravataClientException ace,
-                       3: airavata_errors.AiravataSystemException ase)
-
-   /**
    *
    * Creates a Project with basic metadata.
    *    A Project is a container of experiments.
@@ -1125,433 +1002,7 @@ service Airavata {
             4: airavata_errors.AiravataSystemException ase,
             5: airavata_errors.AuthorizationException ae)
 
-/*
- *
- * API definitions for App Catalog related operations
- *
-*/
-
-/*
- *
- * Application Module
- *  A specific computational application. Many applications, particularly scientific applications
- *  are really a suite of applications or encompass of an ecosystem. For instance, Amber is referred to dozens of binaries.
- *  WRF is referred for an ecosystem of applications. In this context, we refer to module as a single binary.
- *
- * Note: A module has to be defined before a deployment can be registered.
- *
-*/
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                        2: required string gatewayId,
-                        3: required application_deployment_model.ApplicationModule applicationModule)
-    	throws (1: airavata_errors.InvalidRequestException ire,
-              2: airavata_errors.AiravataClientException ace,
-              3: airavata_errors.AiravataSystemException ase,
-              4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string appModuleId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-            2: required string appModuleId,
-            3: required application_deployment_model.ApplicationModule applicationModule)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string gatewayId)
-        throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                               2: required string appModuleId)
-         	throws (1: airavata_errors.InvalidRequestException ire,
-                   2: airavata_errors.AiravataClientException ace,
-                   3: airavata_errors.AiravataSystemException ase,
-                   4: airavata_errors.AuthorizationException ae)
-
-/*
- *
- * 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 security_model.AuthzToken authzToken,
-                2: required string gatewayId,
-                3: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
-    	throws (1: airavata_errors.InvalidRequestException ire,
-              2: airavata_errors.AiravataClientException ace,
-              3: airavata_errors.AiravataSystemException ase,
-              4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string appDeploymentId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-            2: required string appDeploymentId,
-            3: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                    2: required string appDeploymentId)
-         	throws (1: airavata_errors.InvalidRequestException ire,
-                   2: airavata_errors.AiravataClientException ace,
-                   3: airavata_errors.AiravataSystemException ase,
-                   4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string gatewayId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   * 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 security_model.AuthzToken authzToken, 2: required string appModuleId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-/*
- *
- * 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 security_model.AuthzToken authzToken, 2: required string gatewayId,
-                3: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
-    	throws (1: airavata_errors.InvalidRequestException ire,
-              2: airavata_errors.AiravataClientException ace,
-              3: airavata_errors.AiravataSystemException ase,
-              4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * Clone an Application Interface.
-   *
-   * @gatewayId
-   *    The identifier for the gateway profile to be requested
-   *
-   * @param existingAppInterfaceID
-   *    Identifier of the existing Application interface you wich to clone.
-   *
-   * @param newApplicationName
-   *    Name for the new application interface.
-   *
-   * @return appInterfaceId
-   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
-   *
-  */
-  string cloneApplicationInterface(1: required security_model.AuthzToken authzToken,
-                         2: string existingAppInterfaceID,
-                         3: string newApplicationName,
-                         4: string gatewayId)
-    throws (1: airavata_errors.InvalidRequestException ire,
-                  2: airavata_errors.AiravataClientException ace,
-                  3: airavata_errors.AiravataSystemException ase,
-                  4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string appInterfaceId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-            2: required string appInterfaceId,
-            3: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
 
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken, 2: required string appInterfaceId)
-         	throws (1: airavata_errors.InvalidRequestException ire,
-                   2: airavata_errors.AiravataClientException ace,
-                   3: airavata_errors.AiravataSystemException ase,
-                   4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken, 2: required string gatewayId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string gatewayId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string appInterfaceId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken,
-                2: required string appInterfaceId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
-
-  /**
-   *
-   * 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 security_model.AuthzToken authzToken, 2: required string appInterfaceId)
-      	throws (1: airavata_errors.InvalidRequestException ire,
-                2: airavata_errors.AiravataClientException ace,
-                3: airavata_errors.AiravataSystemException ase,
-                4: airavata_errors.AuthorizationException ae)
 
 /*
  *

http://git-wip-us.apache.org/repos/asf/airavata/blob/f56d6777/thrift-interface-descriptions/airavata-apis/app_catalog.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/app_catalog.thrift b/thrift-interface-descriptions/airavata-apis/app_catalog.thrift
new file mode 100644
index 0000000..7620352
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-apis/app_catalog.thrift
@@ -0,0 +1,498 @@
+/*
+ * 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.
+ *
+*/
+
+/**
+ * Application Programming Interface definition for Apache Airavata Services.
+ *   this parent thrift file is contains all service interfaces. The data models are
+ *   described in respective thrift files.
+*/
+
+include "airavata_errors.thrift"
+include "security_model.thrift"
+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 "../data-models/user-group-models/group_manager_model.thrift"
+
+namespace java org.apache.airavata.api
+namespace php Airavata.API
+namespace cpp apache.airavata.api
+namespace perl ApacheAiravataAPI
+namespace py apache.airavata.api
+namespace js ApacheAiravataAPI
+
+/**
+ * Airavata Interface Versions depend upon this Thrift Interface File. When making changes, please edit the
+ *  Version Constants according to Semantic Versioning Specification (SemVer) http://semver.org.
+ *
+ * Note: The Airavata API version may be different from the Airavata software release versions.
+ *
+ * The Airavata API version is composed as a dot delimited string with major, minor, and patch level components.
+ *
+ *  - Major: Incremented for backward incompatible changes. An example would be changes to interfaces.
+ *  - Minor: Incremented for backward compatible changes. An example would be the addition of a new optional methods.
+ *  - Patch: Incremented for bug fixes. The patch level should be increased for every edit that doesn't result
+ *              in a change to major/minor version numbers.
+ *
+*/
+
+service AiravataAppCatalogService {
+
+/*
+ *
+ * API definitions for App Catalog related operations
+ *
+*/
+
+/*
+ *
+ * Application Module
+ *  A specific computational application. Many applications, particularly scientific applications
+ *  are really a suite of applications or encompass of an ecosystem. For instance, Amber is referred to dozens of binaries.
+ *  WRF is referred for an ecosystem of applications. In this context, we refer to module as a single binary.
+ *
+ * Note: A module has to be defined before a deployment can be registered.
+ *
+*/
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                        2: required string gatewayId,
+                        3: required application_deployment_model.ApplicationModule applicationModule)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase,
+              4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string appModuleId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+            2: required string appModuleId,
+            3: required application_deployment_model.ApplicationModule applicationModule)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string gatewayId)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                               2: required string appModuleId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase,
+                   4: airavata_errors.AuthorizationException ae)
+
+/*
+ *
+ * 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 security_model.AuthzToken authzToken,
+                2: required string gatewayId,
+                3: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase,
+              4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string appDeploymentId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+            2: required string appDeploymentId,
+            3: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                    2: required string appDeploymentId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase,
+                   4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string gatewayId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   * 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 security_model.AuthzToken authzToken, 2: required string appModuleId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+/*
+ *
+ * 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 security_model.AuthzToken authzToken, 2: required string gatewayId,
+                3: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase,
+              4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * Clone an Application Interface.
+   *
+   * @gatewayId
+   *    The identifier for the gateway profile to be requested
+   *
+   * @param existingAppInterfaceID
+   *    Identifier of the existing Application interface you wich to clone.
+   *
+   * @param newApplicationName
+   *    Name for the new application interface.
+   *
+   * @return appInterfaceId
+   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+   *
+  */
+  string cloneApplicationInterface(1: required security_model.AuthzToken authzToken,
+                         2: string existingAppInterfaceID,
+                         3: string newApplicationName,
+                         4: string gatewayId)
+    throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase,
+                  4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+            2: required string appInterfaceId,
+            3: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken, 2: required string appInterfaceId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase,
+                   4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken, 2: required string gatewayId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string gatewayId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken,
+                2: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  /**
+   *
+   * 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 security_model.AuthzToken authzToken, 2: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/f56d6777/thrift-interface-descriptions/airavata-apis/credential_store.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/credential_store.thrift b/thrift-interface-descriptions/airavata-apis/credential_store.thrift
new file mode 100644
index 0000000..bbfc625
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-apis/credential_store.thrift
@@ -0,0 +1,175 @@
+/*
+ * 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.
+ *
+*/
+
+/**
+ * Application Programming Interface definition for Apache Airavata Services.
+ *   this parent thrift file is contains all service interfaces. The data models are
+ *   described in respective thrift files.
+*/
+
+include "airavata_errors.thrift"
+include "security_model.thrift"
+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 "../data-models/user-group-models/group_manager_model.thrift"
+
+namespace java org.apache.airavata.api
+namespace php Airavata.API
+namespace cpp apache.airavata.api
+namespace perl ApacheAiravataAPI
+namespace py apache.airavata.api
+namespace js ApacheAiravataAPI
+
+
+   /**
+   * 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.
+   *
+   **/
+   string generateAndRegisterSSHKeys (1: required security_model.AuthzToken authzToken,
+                    2: required string gatewayId,
+                    3: required string userName)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+
+ /**
+   * Generate and Register Username PWD Pair with Airavata Credential Store.
+   *
+   * @param gatewayId
+   *    The identifier for the requested Gateway.
+   *
+   * @param portalUserName
+   *    The User for which the credential should be registered. For community accounts, this user is the name of the
+   *    community user name. For computational resources, this user name need not be the same user name on resoruces.
+   *
+   * @param loginUserName
+   *
+   * @param password
+   *
+   * @return airavataCredStoreToken
+   *   An SSH Key pair is generated and stored in the credential store and associated with users or community account
+   *   belonging to a Gateway.
+   *
+   **/
+  string registerPwdCredential (1: required security_model.AuthzToken authzToken,
+                      2: required string gatewayId,
+                      3: required string portalUserName,
+                      4: required string loginUserName,
+                      5: required string password,
+                      6: required string description)
+             throws (1: airavata_errors.InvalidRequestException ire,
+                     2: airavata_errors.AiravataClientException ace,
+                     3: airavata_errors.AiravataSystemException ase)
+
+   /**
+   * Get a Public Key by Providing the Token
+   *
+   * @param CredStoreToken
+   *    Credential Store Token which you want to find the Public Key for.
+   *
+   * @param gatewayId
+   *    This is the unique identifier of your gateway where the token and public key was generated from.
+   *
+   * @return publicKey
+   *
+   **/
+   string getSSHPubKey (1: required security_model.AuthzToken authzToken,
+                        2: required string airavataCredStoreToken,
+                        3: required string gatewayId)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+   /**
+   *
+   * Get all Public Keys of the Gateway
+   *
+   * @param CredStoreToken
+   *    Credential Store Token which you want to find the Public Key for.
+   *
+   * @param gatewayId
+   *    This is the unique identifier of your gateway where the token and public key was generated from.
+   *
+   * @return publicKey
+   *
+   **/
+  map<string, string> getAllGatewaySSHPubKeys (1: required security_model.AuthzToken authzToken,
+                                               2: required string gatewayId)
+             throws (1: airavata_errors.InvalidRequestException ire,
+                     2: airavata_errors.AiravataClientException ace,
+                     3: airavata_errors.AiravataSystemException ase)
+
+
+  map<string, string> getAllGatewayPWDCredentials (1: required security_model.AuthzToken authzToken,
+                                                 2: required string gatewayId)
+               throws (1: airavata_errors.InvalidRequestException ire,
+                       2: airavata_errors.AiravataClientException ace,
+                       3: airavata_errors.AiravataSystemException ase)
+
+    /**
+    *
+    * 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 deleteSSHPubKey (1: required security_model.AuthzToken authzToken,
+                          2: required string airavataCredStoreToken,
+                          3: required string gatewayId)
+             throws (1: airavata_errors.InvalidRequestException ire,
+                     2: airavata_errors.AiravataClientException ace,
+                     3: airavata_errors.AiravataSystemException ase)
+
+
+  bool deletePWDCredential (1: required security_model.AuthzToken authzToken,
+                            2: required string airavataCredStoreToken,
+                            3: required string gatewayId)
+               throws (1: airavata_errors.InvalidRequestException ire,
+                       2: airavata_errors.AiravataClientException ace,
+                       3: airavata_errors.AiravataSystemException ase)

http://git-wip-us.apache.org/repos/asf/airavata/blob/f56d6777/thrift-interface-descriptions/airavata-apis/resource_catalog.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/resource_catalog.thrift b/thrift-interface-descriptions/airavata-apis/resource_catalog.thrift
new file mode 100644
index 0000000..e69de29