You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2015/06/11 14:45:10 UTC
[1/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Repository: airavata
Updated Branches:
refs/heads/master 2c6620f03 -> f742ebde1
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh b/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
new file mode 100755
index 0000000..4e088fe
--- /dev/null
+++ b/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
@@ -0,0 +1,132 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# This script will regenerate the thrift code for Airavata Orchestrator Server Skeltons and Client Stubs.
+
+
+# Global Constants used across the script
+REQUIRED_THRIFT_VERSION='0.9.2'
+BASE_TARGET_DIR='target'
+ORCHESTRATOR_SERVICE_DIR='../../modules/orchestrator/orchestrator-client/src/main/java'
+
+# The Funcation fail prints error messages on failure and quits the script.
+fail() {
+ echo $@
+ exit 1
+}
+
+# The funcation add_license_header adds the ASF V2 license header to all java files within the specified generated
+# directory. The funcation also adds suppress all warnings annotation to all public classes and enum's
+# To Call:
+# add_license_header $generated_code_directory
+add_license_header() {
+
+ # Fetch the generated code directory passed as the argument
+ GENERATED_CODE_DIR=$1
+
+ # For all generated thrift code, add the suppress all warnings annotation
+ # NOTE: In order to save the orginal file as a backup, use sed -i.orig in place of sed -i ''
+ find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public class /@SuppressWarnings("all") public class /'
+ find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public enum /@SuppressWarnings("all") public enum /'
+
+ # For each java file within the genrated directory, add the ASF V2 LICENSE header
+ for f in $(find ${GENERATED_CODE_DIR} -name '*.java'); do
+ cat - ${f} >${f}-with-license <<EOF
+ /*
+ * 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.
+ */
+EOF
+ mv ${f}-with-license ${f}
+ done
+}
+
+# The funcation compares every generated java file with the one in specified existing source location. If the comparision
+# shows a difference, then it replaces with the newly generated file (with added license header).
+# To Call:
+# copy_changed_files $generated_code_directory $existing_source_directory
+copy_changed_files() {
+
+ # Read all the funcation arguments
+ GENERATED_CODE_DIR=$1
+ WORKSPACE_SRC_DIR=$2
+
+ echo "Generated sources are in ${GENERATED_CODE_DIR}"
+ echo "Destination workspace is in ${WORKSPACE_SRC_DIR}"
+
+ # Check if the newly generated files exist in the targetted workspace, if not copy. Only changed files will be synced.
+ # the extra slash to GENERATED_CODE_DIR is needed to ensure the parent directory itself is not copied.
+ rsync -auv ${GENERATED_CODE_DIR}/ ${WORKSPACE_SRC_DIR}
+}
+
+# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
+# Verify is thrift is installed, is in the path is at a specified version.
+VERSION=$(thrift -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" | wc -l)
+if [ "$VERSION" -ne 1 ] ; then
+ echo "****************************************************"
+ echo "*** thrift is not installed or is not in the path"
+ echo "*** expecting 'thrift -version' to return ${REQUIRED_THRIFT_VERSION}"
+ echo "*** generated code will not be updated"
+ fail "****************************************************"
+fi
+
+# Initialize the thrift arguements.
+# Since most of the Airavata API and Data Models have includes, use recursive option by defualt.
+# Generate all the files in target directory
+THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
+# Ensure the required target directories exists, if not create.
+mkdir -p ${BASE_TARGET_DIR}
+
+#######################################################################
+# Generate/Update the orchestrator CPI service stubs
+# To start with both the servicer and client are in same package, but
+# needs to be split using a common generated api-boilerplate-code
+#######################################################################
+
+#Java generation directory
+JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
+
+# As a precausion remove and previously generated files if exists
+rm -rf ${JAVA_GEN_DIR}
+
+# Using thrify Java generator, generate the java classes based on Airavata API. This
+# The airavata-api.thrift includes rest of data models.
+thrift ${THRIFT_ARGS} --gen java orchestrator.cpi.service.thrift || fail unable to generate java thrift classes
+
+# For the generated java classes add the ASF V2 License header
+add_license_header $JAVA_GEN_DIR
+
+# Compare the newly generated classes with existing java generated skelton/stub sources and replace the changed ones.
+copy_changed_files ${JAVA_GEN_DIR} ${ORCHESTRATOR_SERVICE_DIR}
+
+# CleanUp: Delete the base target build directory
+#rm -rf ${BASE_TARGET_DIR}
+
+echo "Successfully generated new sources, compared against exiting code and replaced the changed files"
+exit 0
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift b/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
new file mode 100644
index 0000000..1b7a2ea
--- /dev/null
+++ b/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
@@ -0,0 +1,78 @@
+/*
+ * 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 Orchestration Service.
+ *
+*/
+
+include "../airavata-api/airavata-errors.thrift"
+namespace java org.apache.airavata.orchestrator.cpi
+
+const string ORCHESTRATOR_CPI_VERSION = "0.13.0"
+
+service OrchestratorService {
+
+ /** Query orchestrator server to fetch the CPI version */
+ string getOrchestratorCPIVersion(),
+
+ /**
+ * After creating the experiment Data user have the
+ * experimentID as the handler to the experiment, during the launchExperiment
+ * We just have to give the experimentID
+ *
+ * @param experimentID
+ * @return sucess/failure
+ *
+ **/
+ bool launchExperiment (1: required string experimentId, 2: required string airavataCredStoreToken),
+
+ /**
+ * In order to run single applications users should create an associating
+ * WorkflowNodeDetails and a TaskDetails for it and hand it over for execution
+ * along with a credential store token for authentication
+ *
+ * @param taskId
+ * @param airavataCredStoreToken
+ * @return sucess/failure
+ *
+ **/
+ bool launchTask (1: required string taskId, 2: required string airavataCredStoreToken),
+
+ /**
+ *
+ * Validate funcations which can verify if the experiment is ready to be launced.
+ *
+ * @param experimentID
+ * @return sucess/failure
+ *
+ **/
+ bool validateExperiment(1: required string experimentId)
+ throws (1: airavataErrors.LaunchValidationException lve)
+ /**
+ *
+ * Terminate the running experiment.
+ *
+ * @param experimentID
+ * @return sucess/failure
+ *
+ **/
+ bool terminateExperiment (1: required string experimentId, 2: required string tokenId)
+}
[7/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Posted by sm...@apache.org.
Renaming thrift files to follow the style guide naming convention
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f742ebde
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f742ebde
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f742ebde
Branch: refs/heads/master
Commit: f742ebde120b1b8f5d5d9ab8eadf4073320754d7
Parents: 2c6620f
Author: Suresh Marru <sm...@apache.org>
Authored: Thu Jun 11 08:40:59 2015 -0400
Committer: Suresh Marru <sm...@apache.org>
Committed: Thu Jun 11 08:40:59 2015 -0400
----------------------------------------------------------------------
.../airavata-api/airavataAPI.thrift | 2079 ------------------
.../airavata-api/airavataDataModel.thrift | 38 -
.../airavata-api/airavataErrors.thrift | 172 --
.../airavata-api/appCatalogModels.thrift | 24 -
.../applicationDeploymentModel.thrift | 132 --
.../applicationInterfaceModel.thrift | 146 --
.../airavata-api/computeResourceModel.thrift | 445 ----
.../airavata-api/experimentModel.thrift | 422 ----
.../gatewayResourceProfileModel.thrift | 83 -
.../airavata-api/generate-thrift-files.sh | 305 ---
.../airavata-api/messagingEvents.thrift | 149 --
.../airavata-api/securityModel.thrift | 35 -
.../airavata-api/workflowAPI.thrift | 82 -
.../airavata-api/workflowDataModel.thrift | 43 -
.../airavata-api/workspaceModel.thrift | 63 -
.../gfac/generate-gfac-stubs.sh | 134 --
.../gfac/gfac.cpi.service.thrift | 68 -
.../gfac/gfacDataModel.thrift | 64 -
.../orchestrator/generate-orchestrator-stubs.sh | 132 --
.../orchestrator.cpi.service.thrift | 78 -
.../cs-thrift-descriptions/generate-cs-stubs.sh | 2 +-
.../airavata-api/airavata-api.thrift | 2079 ++++++++++++++++++
.../airavata-api/airavata-data-models.thrift | 38 +
.../airavata-api/airavata-errors.thrift | 172 ++
.../airavata-api/app-catalog-models.thrift | 24 +
.../application-deployment-model.thrift | 132 ++
.../application-interface-model.thrift | 146 ++
.../airavata-api/compute-resource-model.thrift | 445 ++++
.../airavata-api/experiment-model.thrift | 422 ++++
.../gateway-resource-profile-model.thrift | 83 +
.../airavata-api/messaging-events.thrift | 149 ++
.../airavata-api/security-model.thrift | 35 +
.../airavata-api/workflow-api.thrift | 82 +
.../airavata-api/workflow-data-model.thrift | 43 +
.../airavata-api/workspace-model.thrift | 63 +
.../generate-thrift-stubs.sh | 300 +++
.../gfac-cpi/generate-gfac-stubs.sh | 134 ++
.../gfac-cpi/gfac.cpi.service.thrift | 68 +
.../gfac-cpi/gfacDataModel.thrift | 64 +
.../generate-orchestrator-stubs.sh | 132 ++
.../orchestrator.cpi.service.thrift | 78 +
41 files changed, 4690 insertions(+), 4695 deletions(-)
----------------------------------------------------------------------
[6/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/airavataAPI.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/airavataAPI.thrift b/component-interface-descriptions/airavata-api/airavataAPI.thrift
deleted file mode 100644
index 1dafab2..0000000
--- a/component-interface-descriptions/airavata-api/airavataAPI.thrift
+++ /dev/null
@@ -1,2079 +0,0 @@
-/*
- * 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 "airavataErrors.thrift"
-include "airavataDataModel.thrift"
-include "experimentModel.thrift"
-include "workspaceModel.thrift"
-include "computeResourceModel.thrift"
-include "applicationDeploymentModel.thrift"
-include "applicationInterfaceModel.thrift"
-include "gatewayResourceProfileModel.thrift"
-include "workflowDataModel.thrift"
-include "securityModel.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.
- *
-*/
-const string AIRAVATA_API_VERSION = "0.15.0"
-
-service Airavata {
-
-/**
- * Apache Airavata API Service Methods. For data structures associated in the signatures, please see included thrift files
-*/
-
- /**
- * Fetch Apache Airavata API version
- */
- string getAPIVersion(1: required securityModel.AuthzToken authzToken)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase,
- 4: airavataErrors.AuthorizationException ae)
-
- string addGateway(1: required workspaceModel.Gateway gateway)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- void updateGateway(1: required string gatewayId, 2: required workspaceModel.Gateway updatedGateway)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- workspaceModel.Gateway getGateway(1: required string gatewayId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool deleteGateway(1: required string gatewayId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- list<workspaceModel.Gateway> getAllGateways()
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool isGatewayExist(1: required string gatewayId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * Airavata Adminstrative Funcationality
- **/
-
-
- /**
- * 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 string gatewayId, 2: required string userName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- string getSSHPubKey (1: required string airavataCredStoreToken)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- map<string, string> getAllUserSSHPubKeys (1: required string userName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Creates a Project with basic metadata.
- * A Project is a container of experiments.
- *
- * @param gatewayId
- * The identifier for the requested gateway.
- *
- * @param Project
- * The Project Object described in the workspaceModel
- *
- */
- string createProject (1: required string gatewayId,
- 2: required workspaceModel.Project project)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Update a Project
- *
- */
- void updateProject (1: required string projectId,
- 2: required workspaceModel.Project updatedProject)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase,
- 4: airavataErrors.ProjectNotFoundException pnfe)
-
-/**
- * Get a Project by ID
- *
- */
- workspaceModel.Project getProject (1: required string projectId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase,
- 4: airavataErrors.ProjectNotFoundException pnfe)
-
- bool deleteProject (1: required string projectId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase,
- 4: airavataErrors.ProjectNotFoundException pnfe)
-
- /**
- * Get all Project by user
- *
- * @param gatewayId
- * The identifier for the requested gateway.
- *
- * @param userName
- * The Project Object described in the workspaceModel
- * @deprecated Instead use getAllUserProjectsWithPagination
- **/
- list<workspaceModel.Project> getAllUserProjects (1: required string gatewayId,
- 2: required string userName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get all Project by 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<workspaceModel.Project> getAllUserProjectsWithPagination (1: required string gatewayId,
- 2: required string userName,
- 3: required i32 limit,
- 4: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get all Project for user by project name
- *
- * @param gatewayId
- * The identifier for the requested gateway.
- * @param userName
- * The identifier of the user
- * @param projectName
- * The name of the project on which the results to be fetched
- * @deprecated Instead use searchProjectsByProjectNameWithPagination
- */
- list<workspaceModel.Project> searchProjectsByProjectName (1: required string gatewayId,
- 2: required string userName, 3: required string projectName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get all Project for user by project name 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 projectName
- * The name of the project on which the results to be fetched
- * @param limit
- * The amount results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<workspaceModel.Project> searchProjectsByProjectNameWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required string projectName,4: required i32 limit,
- 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get all Project for user by project description
- * @param gatewayId
- * The identifier for the requested gateway.
- * @param userName
- * The identifier of the user
- * @param description
- * The description to be matched
- * @deprecated Instead use searchProjectsByProjectDescWithPagination
- */
- list<workspaceModel.Project> searchProjectsByProjectDesc (1: required string gatewayId,
- 2: required string userName, 3: required string description)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search and get all Projects for user by project description 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 description
- * The description to be matched
- * @param limit
- * The amount results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<workspaceModel.Project> searchProjectsByProjectDescWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required string description, 4: required i32 limit,
- 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * Search Experiments by experiment name
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param useNname
- * Username of the requested user
- * @param expName
- * Experiment name to be matched
- * @deprecated
- * Instead use searchExperimentsByNameWithPagination
- *
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByName (1: required string gatewayId,
- 2: required string userName, 3: required string expName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search Experiments by experiment name with pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param expName
- * Experiment name to be matched
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByNameWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required string expName, 4: required i32 limit,
- 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search Experiments by experiment name
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param description
- * Experiment description to be matched
- * @deprecated
- * Instead use searchExperimentsByDescWithPagination
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByDesc (1: required string gatewayId,
- 2: required string userName, 3: required string description)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search Experiments by experiment name with pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param description
- * Experiment description to be matched
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByDescWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required string description, 4: required i32 limit,
- 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * Search Experiments by application id
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param applicationId
- * Application id to be matched
- * @deprecated
- * Instead use searchExperimentsByApplicationWithPagination
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByApplication (1: required string gatewayId,
- 2: required string userName, 3: required string applicationId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
- /**
- * Search Experiments by application id with pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param applicationId
- * Application id to be matched
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByApplicationWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required string applicationId, 4: required i32 limit,
- 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
- /**
- * Search Experiments by experiment status
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param experimentState
- * Experiement state to be matched
- * @deprecated
- * Instead use searchExperimentsByStatusWithPagination
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByStatus (1: required string gatewayId,
- 2: required string userName, 3: required experimentModel.ExperimentState experimentState)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search Experiments by experiment status with pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param experimentState
- * Experiement state to be matched
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByStatusWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required experimentModel.ExperimentState experimentState,
- 4: required i32 limit, 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search Experiments by experiment creation time
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param fromTime
- * Start time of the experiments creation time
- * @param toTime
- * End time of the experiement creation time
- * @deprecated
- * Instead use searchExperimentsByCreationTimeWithPagination
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByCreationTime (1: required string gatewayId,
- 2: required string userName, 3: required i64 fromTime, 4: required i64 toTime)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Search Experiments by experiment creation time with pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param gatewayId
- * Identifier of the requested gateway
- * @param userName
- * Username of the requested user
- * @param fromTime
- * Start time of the experiments creation time
- * @param toTime
- * End time of the experiement creation time
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.ExperimentSummary> searchExperimentsByCreationTimeWithPagination (1: required string gatewayId,
- 2: required string userName, 3: required i64 fromTime, 4: required i64 toTime,
- 5: required i32 limit, 6: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 requested user
- * @param filters
- * map of multiple filter criteria.
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.ExperimentSummary> searchExperiments(1: required string gatewayId,
- 2: required string userName, 3: map<experimentModel.ExperimentSearchFields, string> filters,
- 4: required i32 limit, 5: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get Experiment Statisitics for the given gateway for a specific time period
- * @param gatewayId
- * Identifier of the requested gateway
- * @param fromTime
- * Starting date time
- * @param toTime
- * Ending data time
- **/
- experimentModel.ExperimentStatistics getExperimentStatistics(1: required string gatewayId,
- 2: required i64 fromTime, 3: required i64 toTime)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get all Experiments within a Project
- *
- * @param projectId
- * Identifier of the project
- * @deprecated
- * Instead use getAllExperimentsInProjectWithPagination
- */
- list<experimentModel.Experiment> getAllExperimentsInProject(1: required string projectId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase,
- 4: airavataErrors.ProjectNotFoundException pnfe)
-
- /**
- * Get all Experiments within project with pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param projectId
- * Identifier of the project
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.Experiment> getAllExperimentsInProjectWithPagination(1: required string projectId,
- 2: required i32 limit, 3: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase,
- 4: airavataErrors.ProjectNotFoundException pnfe)
-
-
- /**
- * Get all Experiments by user
- *
- * @param gatewayId
- * Identifier of the requesting gateway
- * @param userName
- * Username of the requested user
- * @deprecated
- * Instead use getAllUserExperimentsWithPagination
- */
- list<experimentModel.Experiment> getAllUserExperiments(1: required string gatewayId,
- 2: required string userName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Get all Experiments by user pagination. Results will be sorted
- * based on creation time DESC
- *
- * @param gatewayId
- * Identifier of the requesting gateway
- * @param userName
- * Username of the requested user
- * @param limit
- * Amount of results to be fetched
- * @param offset
- * The starting point of the results to be fetched
- */
- list<experimentModel.Experiment> getAllUserExperimentsWithPagination(1: required string gatewayId,
- 2: required string userName, 3: required i32 limit, 4: required i32 offset)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
- * but inferred from the authentication header. This experiment is just a persistent place holder. The client
- * has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
- * registering the experiment in a persistent store.
- *
- * @param basicExperimentMetadata
- * The create experiment will require the basic experiment metadata like the name and description, intended user,
- * the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
- * the ExperimentMetadata is a required field.
- *
- * @return
- * The server-side generated.airavata.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 experimentModel.Experiment experiment)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch previously created experiment metadata.
- *
- * @param airavataExperimentId
- * The identifier for the requested experiment. This is returned during the create experiment step.
- *
- * @return experimentMetada
- * This method will return the previously stored experiment metadata.
- *
- * @throws org.apache.airavata.model.error.InvalidRequestException
- * For any incorrect forming of the request itself.
- *
- * @throws org.apache.airavata.model.error.ExperimentNotFoundException
- * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
- *
- * @throws org.apache.airavata.model.error.AiravataClientException
- * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
- *
- * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
- * step, then Airavata Registry will not have a provenance area setup. The client has to follow
- * gateway registration steps and retry this request.
- *
- * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
- * For now this is a place holder.
- *
- * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
- * is implemented, the authorization will be more substantial.
- *
- * @throws org.apache.airavata.model.error.AiravataSystemException
- * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
- * rather an Airavata Administrator will be notified to take corrective action.
- *
- */
- experimentModel.Experiment getExperiment(1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- /**
- * Configure a previously created experiment with required inputs, scheduling and other quality of service
- * parameters. This method only updates the experiment object within the registry. The experiment has to be launched
- * to make it actionable by the server.
- *
- * @param airavataExperimentId
- * The identifier for the requested experiment. This is returned during the create experiment step.
- *
- * @param experimentConfigurationData
- * The configuration information of the experiment with application input parameters, computational resource scheduling
- * information, special input output handling and additional quality of service parameters.
- *
- * @return
- * This method call does not have a return value.
- *
- * @throws org.apache.airavata.model.error.InvalidRequestException
- * For any incorrect forming of the request itself.
- *
- * @throws org.apache.airavata.model.error.ExperimentNotFoundException
- * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
- *
- * @throws org.apache.airavata.model.error.AiravataClientException
- * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
- *
- * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
- * step, then Airavata Registry will not have a provenance area setup. The client has to follow
- * gateway registration steps and retry this request.
- *
- * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
- * For now this is a place holder.
- *
- * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
- * is implemented, the authorization will be more substantial.
- *
- * @throws org.apache.airavata.model.error.AiravataSystemException
- * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
- * rather an Airavata Administrator will be notified to take corrective action.
- *
- */
- void updateExperiment(1: required string airavataExperimentId,
- 2: required experimentModel.Experiment experiment)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- void updateExperimentConfiguration(1: required string airavataExperimentId,
- 2: required experimentModel.UserConfigurationData userConfiguration)
-
- void updateResourceScheduleing(1: required string airavataExperimentId,
- 2: required experimentModel.ComputationalResourceScheduling resourceScheduling)
-
- /**
- *
- * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
- *
- * @param experimentID
- * @return sucess/failure
- *
- **/
- bool validateExperiment(1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- /**
- * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
- * notifications and intermediate and output data will be subsequently available for this experiment.
- *
- * @param airavataExperimentId
- * The identifier for the requested experiment. This is returned during the create experiment step.
- *
- * @param airavataCredStoreToken:
- * A requirement to execute experiments within Airavata is to first register the targeted remote computational account
- * credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
- * generated token associated with the registered credentials. The client has to security posses this token id and is
- * required to pass it to Airavata Server for all execution requests.
- * Note: At this point only the credential store token is required so the string is directly passed here. In future if
- * if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
- * Note: This parameter is not persisted within Airavata Registry for security reasons.
- *
- * @return
- * This method call does not have a return value.
- *
- * @throws org.apache.airavata.model.error.InvalidRequestException
- * For any incorrect forming of the request itself.
- *
- * @throws org.apache.airavata.model.error.ExperimentNotFoundException
- * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
- *
- * @throws org.apache.airavata.model.error.AiravataClientException
- * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
- *
- * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
- * step, then Airavata Registry will not have a provenance area setup. The client has to follow
- * gateway registration steps and retry this request.
- *
- * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
- * For now this is a place holder.
- *
- * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
- * is implemented, the authorization will be more substantial.
- *
- * @throws org.apache.airavata.model.error.AiravataSystemException
- * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
- * rather an Airavata Administrator will be notified to take corrective action.
- *
- */
- void launchExperiment(1: required string airavataExperimentId
- 2: required string airavataCredStoreToken)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase,
- 5: airavataErrors.LaunchValidationException lve)
-
-
- experimentModel.ExperimentStatus getExperimentStatus(1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- list<applicationInterfaceModel.OutputDataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- list<applicationInterfaceModel.OutputDataObjectType> getIntermediateOutputs (1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
-
- map<string, experimentModel.JobStatus> getJobStatuses(1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- list<experimentModel.JobDetails> getJobDetails(1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- list<experimentModel.DataTransferDetails> getDataTransferDetails(1: required string airavataExperimentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- /**
- * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
- * The client has to subsequently update this configuration if needed and launch the cloned experiment.
- *
- * @param newExperimentName
- * experiment name that should be used in the cloned experiment
- *
- * @param updatedExperiment
- * Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
- * the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
- * should be shared public by default.
- *
- * @return
- * The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
- *
- * @throws org.apache.airavata.model.error.InvalidRequestException
- * For any incorrect forming of the request itself.
- *
- * @throws org.apache.airavata.model.error.ExperimentNotFoundException
- * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
- *
- * @throws org.apache.airavata.model.error.AiravataClientException
- * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
- *
- * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
- * step, then Airavata Registry will not have a provenance area setup. The client has to follow
- * gateway registration steps and retry this request.
- *
- * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
- * For now this is a place holder.
- *
- * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
- * is implemented, the authorization will be more substantial.
- *
- * @throws org.apache.airavata.model.error.AiravataSystemException
- * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
- * rather an Airavata Administrator will be notified to take corrective action.
- *
- */
- string cloneExperiment(1: string existingExperimentID,
- 2: string newExperimentName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
- /**
- * Terminate a running experiment.
- *
- * @param airavataExperimentId
- * The identifier for the requested experiment. This is returned during the create experiment step.
- *
- * @return
- * This method call does not have a return value.
- *
- * @throws org.apache.airavata.model.error.InvalidRequestException
- * For any incorrect forming of the request itself.
- *
- * @throws org.apache.airavata.model.error.ExperimentNotFoundException
- * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
- *
- * @throws org.apache.airavata.model.error.AiravataClientException
- * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
- *
- * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
- * step, then Airavata Registry will not have a provenance area setup. The client has to follow
- * gateway registration steps and retry this request.
- *
- * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
- * For now this is a place holder.
- *
- * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
- * is implemented, the authorization will be more substantial.
- *
- * @throws org.apache.airavata.model.error.AiravataSystemException
- * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
- * rather an Airavata Administrator will be notified to take corrective action.
- *
- */
- void terminateExperiment(1: string airavataExperimentId, 2: string tokenId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.ExperimentNotFoundException enf,
- 3: airavataErrors.AiravataClientException ace,
- 4: airavataErrors.AiravataSystemException ase)
-
-/*
- * API definitions for App Catalog related operations
- *
-*/
-
-/*
- * Application Module is a specific computational application. Many applications, particularly scientific applications
- * are really a suite of applications or encompass 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.
- *
- * @param applicationModule
- * Application Module Object created from the datamodel.
- *
- * @return appModuleId
- * Returns a server-side generated airavata appModule globally unique identifier.
- *
- */
- string registerApplicationModule(1: required string gatewayId,
- 2: required applicationDeploymentModel.ApplicationModule applicationModule)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch a Application Module.
- *
- * @param appModuleId
- * The identifier for the requested application module
- *
- * @return applicationModule
- * Returns a application Module Object.
- *
- */
- applicationDeploymentModel.ApplicationModule getApplicationModule(1: required string appModuleId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 applicationDeploymentModel.ApplicationModule applicationModule)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- list<applicationDeploymentModel.ApplicationModule> getAllAppModules (1: required string gatewayId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Delete a Application Module.
- *
- * @param appModuleId
- * The identifier for the requested application module to be deleted.
- *
- * @return status
- * Returns a success/failure of the deletion.
- *
- */
- bool deleteApplicationModule(1: required string appModuleId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-/*
- * Application Deployment registers a deployment of a application module on a compute resource
- *
-*/
-
- /**
- * Register a Application Deployment.
- *
- * @param applicationModule
- * Application Module Object created from the datamodel.
- *
- * @return appDeploymentId
- * Returns a server-side generated airavata appDeployment globally unique identifier.
- *
- */
- string registerApplicationDeployment(1: required string gatewayId,
- 2: required applicationDeploymentModel.ApplicationDeploymentDescription applicationDeployment)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch a Application Deployment.
- *
- * @param appDeploymentId
- * The identifier for the requested application module
- *
- * @return applicationDeployment
- * Returns a application Deployment Object.
- *
- */
- applicationDeploymentModel.ApplicationDeploymentDescription getApplicationDeployment(1: required string appDeploymentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Update a Application Deployment.
- *
- * @param appDeploymentId
- * The identifier for the requested application deployment to be updated.
- *
- * @param appDeployment
- * Application Deployment Object created from the datamodel.
- *
- * @return status
- * Returns a success/failure of the update.
- *
- */
- bool updateApplicationDeployment(1: required string appDeploymentId,
- 2: required applicationDeploymentModel.ApplicationDeploymentDescription applicationDeployment)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Delete a Application deployment.
- *
- * @param appDeploymentId
- * The identifier for the requested application deployment to be deleted.
- *
- * @return status
- * Returns a success/failure of the deletion.
- *
- */
- bool deleteApplicationDeployment(1: required string appDeploymentId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch all Application Deployment Descriptions.
- *
- * @return list<applicationDeployment.
- * Returns the list of all application Deployment Objects.
- *
- */
- list<applicationDeploymentModel.ApplicationDeploymentDescription> getAllApplicationDeployments(1: required string gatewayId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-/*
- * Application Interface
- *
-*/
-
- /**
- * Register a Application Interface.
- *
- * @param applicationModule
- * Application Module Object created from the datamodel.
- *
- * @return appInterfaceId
- * Returns a server-side generated airavata application interface globally unique identifier.
- *
- */
- string registerApplicationInterface(1: required string gatewayId,
- 2: required applicationInterfaceModel.ApplicationInterfaceDescription applicationInterface)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch a Application Interface.
- *
- * @param appInterfaceId
- * The identifier for the requested application module
- *
- * @return applicationInterface
- * Returns a application Interface Object.
- *
- *
- */
- applicationInterfaceModel.ApplicationInterfaceDescription getApplicationInterface(1: required string appInterfaceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Update a Application Interface.
- *
- * @param appInterfaceId
- * The identifier for the requested application deployment to be updated.
- *
- * @param appInterface
- * Application Interface Object created from the datamodel.
- *
- * @return status
- * Returns a success/failure of the update.
- *
- *
- */
- bool updateApplicationInterface(1: required string appInterfaceId,
- 2: required applicationInterfaceModel.ApplicationInterfaceDescription applicationInterface)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Delete a Application Interface.
- *
- * @param appInterfaceId
- * The identifier for the requested application interface to be deleted.
- *
- * @return status
- * Returns a success/failure of the deletion.
- *
- *
- */
- bool deleteApplicationInterface(1: required string appInterfaceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch all Application Interface documents.
- *
- *
- * @return map<applicationId, applicationInterfaceNames>
- * Returns a list of application interfaces documents
- *
- */
- list<applicationInterfaceModel.ApplicationInterfaceDescription> getAllApplicationInterfaces (1: required string gatewayId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch the list of Application Inputs.
- *
- * @param appInterfaceId
- * The identifier for the requested application interface
- *
- * @return list<applicationInterfaceModel.InputDataObjectType>
- * Returns a list of application inputs.
- *
- */
- list<applicationInterfaceModel.InputDataObjectType> getApplicationInputs(1: required string appInterfaceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch the list of Application Outputs.
- *
- * @param appInterfaceId
- * The identifier for the requested application interface
- *
- * @return list<applicationInterfaceModel.OutputDataObjectType>
- * Returns a list of application outputs.
- *
- */
- list<applicationInterfaceModel.OutputDataObjectType> getApplicationOutputs(1: required string appInterfaceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-/*
- * 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 computeResourceModel.ComputeResourceDescription
- computeResourceDescription)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch the given Compute Resource.
- *
- * @param computeResourceId
- * The identifier for the requested compute resource
- *
- * @return computeResourceDescription
- * Compute Resource Object created from the datamodel..
- *
- */
- computeResourceModel.ComputeResourceDescription getComputeResource(1: required string computeResourceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 computeResourceModel.ComputeResourceDescription computeResourceDescription)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 computeResourceModel.LOCALSubmission localSubmission)
-
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 computeResourceModel.LOCALSubmission localSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * This method returns localJobSubmission object
- * @param jobSubmissionInterfaceId
- * The identifier of the JobSubmission Interface to be retrieved.
- * @return LOCALSubmission instance
- **/
- computeResourceModel.LOCALSubmission getLocalJobSubmission(1: required string jobSubmissionId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
-
- /**
- * 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 computeResourceModel.SSHJobSubmission sshJobSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * This method returns SSHJobSubmission object
- * @param jobSubmissionInterfaceId
- * The identifier of the JobSubmission Interface to be retrieved.
- * @return SSHJobSubmission instance
- **/
- computeResourceModel.SSHJobSubmission getSSHJobSubmission(1: required string jobSubmissionId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
-
- /**
- * 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 computeResourceModel.UnicoreJobSubmission unicoreJobSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * This method returns UnicoreJobSubmission object
- * @param jobSubmissionInterfaceId
- * The identifier of the JobSubmission Interface to be retrieved.
- * @return UnicoreJobSubmission instance
- **/
- computeResourceModel.UnicoreJobSubmission getUnicoreJobSubmission(1: required string jobSubmissionId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * 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 computeResourceModel.CloudJobSubmission cloudSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * This method returns cloudJobSubmission object
- * @param jobSubmissionInterfaceI
- * The identifier of the JobSubmission Interface to be retrieved.
- * @return CloudJobSubmission instance
- **/
- computeResourceModel.CloudJobSubmission getCloudJobSubmission(1: required string jobSubmissionId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Update the given SSH Job Submission details
- *
- * @param jobSubmissionInterfaceId
- * The identifier of the JobSubmission Interface to be updated.
- *
- * @param sshJobSubmission
- * The SSHJobSubmission object to be updated.
- *
- * @return status
- * Returns a success/failure of the deletion.
- *
- */
- bool updateSSHJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
- 2: required computeResourceModel.SSHJobSubmission sshJobSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-/**
- * Update the given SSH Job Submission details
- *
- * @param jobSubmissionInterfaceId
- * The identifier of the JobSubmission Interface to be updated.
- *
- * @param cloudJobSubmission
- * The CloudJobSubmission object to be updated.
- *
- * @return status
- * Returns a success/failure of the deletion.
- *
- */
- bool updateCloudJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
- 2: required computeResourceModel.CloudJobSubmission sshJobSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool updateUnicoreJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
- 2: required computeResourceModel.UnicoreJobSubmission unicoreJobSubmission)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
- /**
- * Add a Local data movement details to a compute resource
- * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
- *
- * @param computeResourceId
- * The identifier of the compute resource to which JobSubmission protocol to be added
- *
- * @param priorityOrder
- * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
- *
- * @param localDataMovement
- * The LOCALDataMovement object to be added to the resource.
- *
- * @return status
- * Returns the unique job submission id.
- *
- */
- string addLocalDataMovementDetails(1: required string computeResourceId,
- 2: required i32 priorityOrder,
- 3: required computeResourceModel.LOCALDataMovement localDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 computeResourceModel.LOCALDataMovement localDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * This method returns local datamovement object
- * @param dataMovementId
- * The identifier of the datamovement Interface to be retrieved.
- * @return LOCALDataMovement instance
- **/
- computeResourceModel.LOCALDataMovement getLocalDataMovement(1: required string dataMovementId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * Add a SCP data movement details to a compute resource
- * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
- *
- * @param computeResourceId
- * The identifier of the compute resource to which JobSubmission protocol to be added
- *
- * @param priorityOrder
- * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
- *
- * @param scpDataMovement
- * The SCPDataMovement object to be added to the resource.
- *
- * @return status
- * Returns the unique job submission id.
- *
- */
- string addSCPDataMovementDetails(1: required string computeResourceId,
- 2: required i32 priorityOrder,
- 3: required computeResourceModel.SCPDataMovement scpDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 computeResourceModel.SCPDataMovement scpDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * This method returns SCP datamovement object
- * @param dataMovementId
- * The identifier of the datamovement Interface to be retrieved.
- * @return SCPDataMovement instance
- **/
- computeResourceModel.SCPDataMovement getSCPDataMovement(1: required string dataMovementId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- string addUnicoreDataMovementDetails(1: required string computeResourceId,
- 2: required i32 priorityOrder,
- 3: required computeResourceModel.UnicoreDataMovement unicoreDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool updateUnicoreDataMovementDetails(1: required string dataMovementInterfaceId,
- 2: required computeResourceModel.UnicoreDataMovement unicoreDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- computeResourceModel.UnicoreDataMovement getUnicoreDataMovement(1: required string dataMovementId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Add a GridFTP data movement details to a compute resource
- * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
- *
- * @param computeResourceId
- * The identifier of the compute resource to which JobSubmission protocol to be added
- *
- * @param priorityOrder
- * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
- *
- * @param gridFTPDataMovement
- * The GridFTPDataMovement object to be added to the resource.
- *
- * @return status
- * Returns the unique job submission id.
- *
- */
- string addGridFTPDataMovementDetails(1: required string computeResourceId,
- 2: required i32 priorityOrder,
- 3: required computeResourceModel.GridFTPDataMovement gridFTPDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Update the given GridFTP data movement details to a compute resource
- * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
- *
- * @param dataMovementInterfaceId
- * The identifier of the data movement Interface to be updated.
- *
- * @param gridFTPDataMovement
- * The GridFTPDataMovement object to be updated.
- *
- * @return status
- * Returns a success/failure of the updation.
- *
- */
- bool updateGridFTPDataMovementDetails(1: required string dataMovementInterfaceId,
- 2: required computeResourceModel.GridFTPDataMovement gridFTPDataMovement)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * This method returns GridFTP datamovement object
- * @param dataMovementId
- * The identifier of the datamovement Interface to be retrieved.
- * @return GridFTPDataMovement instance
- **/
- computeResourceModel.GridFTPDataMovement getGridFTPDataMovement(1: required string dataMovementId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 computeResourceId, 2: required string dataMovementInterfaceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- string registerResourceJobManager(1: required computeResourceModel.ResourceJobManager resourceJobManager)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool updateResourceJobManager(1: required string resourceJobManagerId, 2: required computeResourceModel.ResourceJobManager updatedResourceJobManager)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- computeResourceModel.ResourceJobManager getResourceJobManager(1: required string resourceJobManagerId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool deleteResourceJobManager(1: required string resourceJobManagerId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool deleteBatchQueue(1: required string computeResourceId, 2: required string queueName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-/*
- * 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 gatewayResourceProfileModel.GatewayResourceProfile gatewayResourceProfile)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Fetch the given Gateway Resource Profile.
- *
- * @param gatewayID
- * The identifier for the requested gateway resource
- *
- * @return gatewayResourceProfile
- * Gateway Resource Profile Object.
- *
- */
- gatewayResourceProfileModel.GatewayResourceProfile getGatewayResourceProfile(1: required string gatewayID)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 gatewayResourceProfileModel.GatewayResourceProfile gatewayResourceProfile)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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 gatewayResourceProfileModel.ComputeResourcePreference computeResourcePreference)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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.
- *
- */
- gatewayResourceProfileModel.ComputeResourcePreference getGatewayComputeResourcePreference(1: required string gatewayID,
- 2: required string computeResourceId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * 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<gatewayResourceProfileModel.ComputeResourcePreference>
- getAllGatewayComputeResourcePreferences(1: required string gatewayID)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
-
- /**
- * Fetch all gateway profiles registered
- **/
- list<gatewayResourceProfileModel.GatewayResourceProfile>
- getAllGatewayComputeResources()
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- /**
- * Update a Compute Resourc
<TRUNCATED>
[5/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/airavataDataModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/airavataDataModel.thrift b/component-interface-descriptions/airavata-api/airavataDataModel.thrift
deleted file mode 100644
index 74de1da..0000000
--- a/component-interface-descriptions/airavata-api/airavataDataModel.thrift
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.
- *
- */
-
-include "workspaceModel.thrift"
-include "airavataErrors.thrift"
-include "messagingEvents.thrift"
-include "securityModel.thrift"
-
-namespace java org.apache.airavata.model
-namespace php Airavata.Model
-namespace cpp apache.airavata.model
-namespace py apache.airavata.model
-
-/*
- * This file describes the definitions of the Airavata Execution Data Structures. Each of the
- * language specific Airavata Client SDK's will translate this neutral data model into an
- * appropriate form for passing to the Airavata Server Execution API Calls.
-*/
-
-
-
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/airavataErrors.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/airavataErrors.thrift b/component-interface-descriptions/airavata-api/airavataErrors.thrift
deleted file mode 100644
index 6ffd5d5..0000000
--- a/component-interface-descriptions/airavata-api/airavataErrors.thrift
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * 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.
- *
- */
-
-/*
-* This file describes the definitions of the Error Messages that can occur
-* when invoking Apache Airavata Services through the API. In addition Thrift provides
-* built in funcationality to raise TApplicationException for all internal server errors.
-*/
-
-include "experimentModel.thrift"
-
-namespace java org.apache.airavata.model.error
-namespace php Airavata.API.Error
-namespace cpp apache.airavata.api.error
-namespace perl AiravataAPIError
-namespace py apache.airavata.api.error
-namespace js AiravataAPIError
-
-/**
- * A list of Airavata API Error Message Types
- *
- * UNKNOWN: No information available about the error
- *
- * PERMISSION_DENIED: Not permitted to perform action
- *
- * INTERNAL_ERROR: Unexpected problem with the service
- *
- * AUTHENTICATION_FAILURE: The client failed to authenticate.
- *
- * INVALID_AUTHORIZATION: Security Token and/or Username and/or password is incorrect
- *
- * AUTHORIZATION_EXPIRED: Authentication token expired
- *
- * UNKNOWN_GATEWAY_ID: The gateway is not registered with Airavata.
- *
- * UNSUPPORTED_OPERATION: Operation denied because it is currently unsupported.
- */
-
-enum AiravataErrorType {
- UNKNOWN,
- PERMISSION_DENIED,
- INTERNAL_ERROR,
- AUTHENTICATION_FAILURE,
- INVALID_AUTHORIZATION,
- AUTHORIZATION_EXPIRED,
- UNKNOWN_GATEWAY_ID,
- UNSUPPORTED_OPERATION
-}
-
-/**
- * This exception is thrown when a client asks to perform an operation on an experiment that does not exist.
- *
- * identifier: A description of the experiment that was not found on the server.
- *
- * key: The value passed from the client in the identifier, which was not found.
- */
-exception ExperimentNotFoundException {
- 1: required string message
- /**
- * 1: optional string identifier,
- * 2: optional string key
- **/
-}
-
-exception ProjectNotFoundException {
- 1: required string message
-}
-
-/**
-* This exception is thrown for invalid requests that occur from any reasons like required input parameters are missing,
-* or a parameter is malformed.
-*
-* message: contains the associated error message.
-*/
-exception InvalidRequestException {
- 1: required string message
-}
-
-
-/**
-* This exception is thrown when RPC timeout gets exceeded.
-*/
-exception TimedOutException {
-}
-
-/**
-* This exception is thrown for invalid authentication requests.
-*
-* message: contains the cause of the authorization failure.
-*/
-exception AuthenticationException {
- 1: required string message
-}
-
-/**
-* This exception is thrown for invalid authorization requests such user does not have acces to an aplication or resource.
-*
-* message: contains the authorization failure message
-*/
-exception AuthorizationException {
- 1: required string message
-}
-
-
-/**
- * This exception is thrown by Airavata Services when a call fails as a result of
- * a problem that a client may be able to resolve. For example, if the user
- * attempts to execute an application on a resource gateway does not have access to.
- *
- * This exception would not be used for internal system errors that do not
- * reflect user actions, but rather reflect a problem within the service that
- * the client cannot resolve.
- *
- * airavataErrorType: The message type indicating the error that occurred.
- * must be one of the values of AiravataErrorType.
- *
- * parameter: If the error applied to a particular input parameter, this will
- * indicate which parameter.
- */
-exception AiravataClientException {
- 1: required AiravataErrorType airavataErrorType,
- 2: optional string parameter
-}
-
-struct ValidatorResult {
- 1: required bool result,
- 2: optional string errorDetails
-}
-
-struct ValidationResults {
- 1: required bool validationState,
- 2: required list<ValidatorResult> validationResultList
-}
-
-exception LaunchValidationException {
- 1: required ValidationResults validationResult;
- 2: optional string errorMessage;
-}
-
-/**
- * This exception is thrown by Airavata Services when a call fails as a result of
- * a problem in the service that could not be changed through client's action.
- *
- * airavataErrorType: The message type indicating the error that occurred.
- * must be one of the values of AiravataErrorType.
- *
- * message: This may contain additional information about the error
- *
- */
-exception AiravataSystemException {
- 1: required AiravataErrorType airavataErrorType,
- 2: optional string message,
-}
-
-
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/appCatalogModels.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/appCatalogModels.thrift b/component-interface-descriptions/airavata-api/appCatalogModels.thrift
deleted file mode 100644
index 9140e01..0000000
--- a/component-interface-descriptions/airavata-api/appCatalogModels.thrift
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.
- *
- */
-
-include "computeResourceModel.thrift"
-include "applicationDeploymentModel.thrift"
-include "applicationInterfaceModel.thrift"
-include "gatewayResourceProfileModel.thrift"
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/applicationDeploymentModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/applicationDeploymentModel.thrift b/component-interface-descriptions/airavata-api/applicationDeploymentModel.thrift
deleted file mode 100644
index a965e23..0000000
--- a/component-interface-descriptions/airavata-api/applicationDeploymentModel.thrift
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.
- *
- */
-
-/**
- * This file describes the definitions of the Data Structures related to deployment of Application on
- * computational resources.
- *
-*/
-
-namespace java org.apache.airavata.model.appcatalog.appdeployment
-namespace php Airavata.Model.AppCatalog.AppDeployment
-namespace cpp apache.airavata.model.appcatalog.appdeployment
-namespace py apache.airavata.model.appcatalog.appdeployment
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-/**
- * Key Value pairs to be used to set environments
- *
- * name:
- * Name of the environment variable such as PATH, LD_LIBRARY_PATH, NETCDF_HOME.
- *
- * value:
- * Value of the environment variable to set
-*/
-struct SetEnvPaths {
- 1: required string name,
- 2: required string value
-}
-
-/**
- * Application Module Information. A module has to be registered before registering a deployment.
- *
- * appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
- *
- * appModuleName:
- * Name of the application module.
- *
- * appModuleVersion:
- * Version of the application.
- *
- * appModuleDescription:
- * Descriprion of the Module
- *
-*/
-struct ApplicationModule {
- 1: required string appModuleId = DEFAULT_ID,
- 2: required string appModuleName,
- 3: optional string appModuleVersion,
- 4: optional string appModuleDescription
-}
-
-/**
- * Enumeration of application parallelism supported by Airavata
- *
- * SERIAL:
- * Single processor applications without any parallelization.
- *
- * MPI:
- * Messaging Passing Interface.
- *
- * OPENMP:
- * Shared Memory Implementtaion.
- *
- * OPENMP_MPI:
- * Hybrid Applications.
- *
-*/
-enum ApplicationParallelismType {
- SERIAL,
- MPI,
- OPENMP,
- OPENMP_MPI
-}
-/**
- * Application Deployment Description
- *
- * appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
- *
- * appModuleName:
- * Application Module Name. This has to be precise describing the binary.
- *
- * computeHostId:
- * This ID maps application deployment to a particular resource previously described within Airavata.
- * Example: Stampede is first registered and refered when registering WRF.
- *
- * moduleLoadCmd:
- * Command string to load modules. This will be placed in the job submisison
- * Ex: module load amber
- *
- * libPrependPaths:
- * prepend to a path variable the value
- *
- * libAppendPaths:
- * append to a path variable the value
- *
- * setEnvironment:
- * assigns to the environment variable "NAME" the value
- *
-*/
-struct ApplicationDeploymentDescription {
-// 1: required bool isEmpty = 0,
- 1: required string appDeploymentId = DEFAULT_ID,
- 2: required string appModuleId,
- 3: required string computeHostId,
- 4: required string executablePath,
- 5: required ApplicationParallelismType parallelism = ApplicationParallelismType.SERIAL,
- 6: optional string appDeploymentDescription,
- 7: optional list<string> moduleLoadCmds,
- 8: optional list<SetEnvPaths> libPrependPaths,
- 9: optional list<SetEnvPaths> libAppendPaths,
- 10: optional list<SetEnvPaths> setEnvironment,
- 11: optional list<string> preJobCommands,
- 12: optional list<string> postJobCommands,
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/applicationInterfaceModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/applicationInterfaceModel.thrift b/component-interface-descriptions/airavata-api/applicationInterfaceModel.thrift
deleted file mode 100644
index 4c57009..0000000
--- a/component-interface-descriptions/airavata-api/applicationInterfaceModel.thrift
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * 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.
- *
- */
-
-/**
- * This file describes the definitions of the Data Structures of Application interfaces. These interfaces are mapped
- * to application mapping on various resources.
- *
-*/
-
-namespace java org.apache.airavata.model.appcatalog.appinterface
-namespace php Airavata.Model.AppCatalog.AppInterface
-namespace cpp apache.airavata.model.appcatalog.appinterface
-namespace py apache.airavata.model.appcatalog.appinterface
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-/**
- * Data Types supported in Airavata. The primitive data types
- *
-*/
-enum DataType{
- STRING,
- INTEGER,
- FLOAT,
- URI,
- STDOUT,
- STDERR
-}
-
-/**
- * Application Inputs. The paramters describe how inputs are passed to the application.
- *
- * name:
- * Name of the parameter.
- *
- * value:
- * Value of the parameter. A default value could be set during registration.
- *
- * type:
- * Data type of the parameter
- *
- * applicationArguement:
- * The argument flag sent to the application. Such as -p pressure.
- *
- * standardInput:
- * When this value is set, the parameter is sent as standard input rather than a parameter.
- * Typically this is passed using redirection operator ">".
- *
- * userFriendlyDescription:
- * Description to be displayed at the user interface.
- *
- * metaData:
- * Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
- *
-*/
-struct InputDataObjectType {
- 1: required string name,
- 2: optional string value,
- 3: optional DataType type,
- 4: optional string applicationArgument,
- 5: optional bool standardInput = 0,
- 6: optional string userFriendlyDescription,
- 7: optional string metaData,
- 8: optional i32 inputOrder,
- 9: optional bool isRequired,
- 10: optional bool requiredToAddedToCommandLine,
- 11: optional bool dataStaged = 0
-}
-
-/**
- * Application Outputs. The paramters describe how outputs generated by the application.
- *
- * name:
- * Name of the parameter.
- *
- * value:
- * Value of the parameter.
- *
- * type:
- * Data type of the parameter
- *
- * applicationArguement:
- * The argument flag sent to the application. Such as -p pressure.
- *
- * standardInput:
- * When this value is set, the parameter is sent as standard input rather than a parameter.
- * Typically this is passed using redirection operator ">".
- *
- * userFriendlyDescription:
- * Description to be displayed at the user interface.
- *
- * metaData:
- * Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
- *
-*/
-struct OutputDataObjectType {
- 1: required string name,
- 2: optional string value,
- 3: optional DataType type,
- 4: optional string applicationArgument,
- 5: optional bool isRequired,
- 6: optional bool requiredToAddedToCommandLine,
- 7: optional bool dataMovement,
- 8: optional string location,
- 9: optional string searchQuery
-}
-
-/**
- * Application Interface Description
- *
- * applicationModules:
- * Associate all application modules with versions which interface is applicable to.
- *
- * applicationInputs:
- * Inputs to be passed to the application
- *
- * applicationOutputs:
- * Outputs generated from the application
- *
-*/
-struct ApplicationInterfaceDescription {
-// 1: required bool isEmpty = 0,
- 1: required string applicationInterfaceId = DEFAULT_ID,
- 2: required string applicationName,
- 3: optional string applicationDescription,
- 4: optional list<string> applicationModules,
- 5: optional list<InputDataObjectType> applicationInputs,
- 6: optional list<OutputDataObjectType> applicationOutputs
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/computeResourceModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/computeResourceModel.thrift b/component-interface-descriptions/airavata-api/computeResourceModel.thrift
deleted file mode 100644
index 6e8361c..0000000
--- a/component-interface-descriptions/airavata-api/computeResourceModel.thrift
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * 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.
- *
- */
-
-namespace java org.apache.airavata.model.appcatalog.computeresource
-namespace php Airavata.Model.AppCatalog.ComputeResource
-namespace cpp apache.airavata.model.appcatalog.computeresource
-namespace py apache.airavata.model.appcatalog.computeresource
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-/**
- * Enumeration of local resource job manager types supported by Airavata
- *
- * FORK:
- * Forking of commands without any job manager
- *
- * PBS:
- * Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
- *
- * SLURM:
- * The Simple Linux Utility for Resource Management is a open source workload manager.
- *
- * UGE:
- * Univa Grid Engine, a variation of PBS implementation.
- *
- * LSF:
- * IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
- *
-*/
-enum ResourceJobManagerType {
- FORK,
- PBS,
- SLURM,
- LSF,
- UGE
-}
-
-/**
- * Enumeration of resource job manager commands
- *
- * SUBMISSION:
- * Ex: qsub, sbatch
- *
- * JOBMONITORING:
- * Ex: qstat, squeue
- *
- * DELETION:
- * Ex: qdel, scancel
- *
- * CHECK_JOB:
- * Detailed Status about the Job. Ex: checkjob
- *
- * SHOW_QUEUE:
- * List of Queued Job by the schedular. Ex: showq
- *
- * SHOW_RESERVATION:
- * List all reservations. Ex:showres, show_res
- *
- * SHOW_START:
- * Display the start time of the specified job. Ex: showstart
- *
-*/
-enum JobManagerCommand {
- SUBMISSION,
- JOB_MONITORING,
- DELETION,
- CHECK_JOB,
- SHOW_QUEUE,
- SHOW_RESERVATION,
- SHOW_START
-}
-
-
-/**
- * Resource Job Manager Information
- *
- * resourceJobManagerType:
- * A typical HPC cluster has a single Job Manager to manage the resources.
- *
- * pushMonitoringEndpoint:
- * If the job manager pushes out state changes to a database or bus, specify the service endpoint.
- * Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
- *
- * jobManagerBinPath:
- * Path to the Job Manager Installation Binary directory.
- *
- * jobManagerCommands:
- * An enumeration of commonly used manager commands.
- *
-*/
-struct ResourceJobManager {
- 1: required string resourceJobManagerId = DEFAULT_ID,
- 2: required ResourceJobManagerType resourceJobManagerType,
- 3: optional string pushMonitoringEndpoint,
- 4: optional string jobManagerBinPath,
- 5: optional map<JobManagerCommand, string> jobManagerCommands
-}
-
-/**
- * Enumeration of File Systems on the resource
- *
- * FORK:
- * Forking of commands without any job manager
- *
- * PBS:
- * Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
- *
- * UGE:
- * Univa Grid Engine, a variation of PBS implementation.
- *
- * SLURM:
- * The Simple Linux Utility for Resource Management is a open source workload manager.
- *
-*/
-enum FileSystems {
- HOME,
- WORK,
- LOCALTMP,
- SCRATCH,
- ARCHIVE
-}
-
-/**
- * Batch Queue Information on SuperComputers
- *
- * maxRunTime:
- * Maximum allowed run time in hours.
-*/
-struct BatchQueue {
- 1: required string queueName,
- 2: optional string queueDescription,
- 3: optional i32 maxRunTime,
- 4: optional i32 maxNodes,
- 5: optional i32 maxProcessors,
- 6: optional i32 maxJobsInQueue,
- 7: optional i32 maxMemory
-}
-
-/**
- * Enumeration of security authentication and authorization mechanisms supported by Airavata. This enumeration just
- * describes the supported mechanism. The corresponding security credentials are registered with Airavata Credential
- * store.
- *
- * USERNAME_PASSWORD:
- * A User Name.
- *
- * SSH_KEYS:
- * SSH Keys
- *
- * FIXME: Change GSI to a more precise generic security protocol - X509
- *
-*/
-enum SecurityProtocol {
- USERNAME_PASSWORD,
- SSH_KEYS,
- GSI,
- KERBEROS,
- OAUTH
-}
-
-/**
- * Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
- *
- * SSH:
- * Execute remote job submission commands using via secure shell protocol.
- *
- * GRAM:
- * Execute remote jobs via Globus GRAM service.
- *
- * UNICORE:
- * Execute remote jobs via Unicore services
- *
-*/
-enum JobSubmissionProtocol {
- LOCAL,
- SSH,
- GLOBUS,
- UNICORE,
- CLOUD
-}
-
-/**
-* Monitoring modes
-*
-* POLL_JOB_MANAGER:
-* GFac need to pull job status changes.
-*
-* XSEDE_AMQP_SUBSCRIBE:
-* Server will publish job status changes to amqp servert.
-*
-**/
-enum MonitorMode {
- POLL_JOB_MANAGER,
- JOB_EMAIL_NOTIFICATION_MONITOR,
- XSEDE_AMQP_SUBSCRIBE
-}
-
-/**
- * Enumeration of data movement supported by Airavata
- *
- * SCP:
- * Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
- *
- * SFTP:
- * The Simple Linux Utility for Resource Management is a open source workload manager.
- *
- * GridFTP:
- * Globus File Transfer Protocol
- *
- * UNICORE_STORAGE_SERVICE:
- * Storage Service Provided by Unicore
- *
-*/
-enum DataMovementProtocol {
- LOCAL,
- SCP,
- SFTP,
- GridFTP,
- UNICORE_STORAGE_SERVICE
-}
-
-/**
- * Data Movement through Secured Copy
- *
- * alternativeSCPHostName:
- * If the login to scp is different than the hostname itself, specify it here
- *
- * sshPort:
- * If a non-default port needs to used, specify it.
-*/
-struct SCPDataMovement {
- 1: required string dataMovementInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: optional string alternativeSCPHostName,
- 4: optional i32 sshPort = 22
-}
-
-/**
- * Data Movement through GridFTP
- *
- * alternativeSCPHostName:
- * If the login to scp is different than the hostname itself, specify it here
- *
- * sshPort:
- * If a non-default port needs to used, specify it.
-*/
-struct GridFTPDataMovement {
- 1: required string dataMovementInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: required list<string> gridFTPEndPoints
-}
-
-/**
- * Data Movement through UnicoreStorage
- *
- * unicoreEndPointURL:
- * unicoreGateway End Point. The provider will query this service to fetch required service end points.
-*/
-struct UnicoreDataMovement {
- 1: required string dataMovementInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: required string unicoreEndPointURL
-}
-
-/**
- * Locally Fork Jobs as OS processes
- *
- * alternativeSSHHostName:
- * If the login to ssh is different than the hostname itself, specify it here
- *
- * sshPort:
- * If a non-default port needs to used, specify it.
-*/
-struct LOCALSubmission {
- 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
- 2: required ResourceJobManager resourceJobManager
-}
-
-/**
- * LOCAL
- *
- * alternativeSCPHostName:
- * If the login to scp is different than the hostname itself, specify it here
- *
- * sshPort:
- * If a non-defualt port needs to used, specify it.
-*/
-struct LOCALDataMovement {
- 1: required string dataMovementInterfaceId = DEFAULT_ID,
-}
-
-/**
- * Authenticate using Secured Shell
- *
- * alternativeSSHHostName:
- * If the login to ssh is different than the hostname itself, specify it here
- *
- * sshPort:
- * If a non-default port needs to used, specify it.
-*/
-struct SSHJobSubmission {
- 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: required ResourceJobManager resourceJobManager,
- 4: optional string alternativeSSHHostName,
- 5: optional i32 sshPort = 22,
- 6: optional MonitorMode monitorMode,
-}
-
-struct GlobusJobSubmission {
- 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: optional list<string> globusGateKeeperEndPoint
-}
-
-/**
- * Unicore Job Submission
- *
- * unicoreEndPointURL:
- * unicoreGateway End Point. The provider will query this service to fetch required service end points.
- * authenticationMode
- * The authenticationMode defines the way certificate is fetched.
-*/
-struct UnicoreJobSubmission {
- 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: required string unicoreEndPointURL,
-}
-
-
-
-/**
-* Provider name
-**/
-enum ProviderName {
- EC2,
- AWSEC2,
- RACKSPACE
-}
-
-/**
- * Cloud Job Submission
- *
- *
-*/
-struct CloudJobSubmission {
- 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
- 2: required SecurityProtocol securityProtocol,
- 3: required string nodeId,
- 4: required string executableType,
- 5: required ProviderName providerName,
- 6: required string userAccountName
-}
-
-/**
- * Job Submission Interfaces
- *
- * jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
- *
- * priorityOrder:
- * For resources with multiple interfaces, the priority order should be selected.
- * Lower the numerical number, higher the priority
- *
-*/
-struct JobSubmissionInterface {
- 1: required string jobSubmissionInterfaceId,
- 2: required JobSubmissionProtocol jobSubmissionProtocol
- 3: required i32 priorityOrder = 0,
-}
-
-/**
- * Data Movement Interfaces
- *
- * dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
- *
- * priorityOrder:
- * For resources with multiple interfaces, the priority order should be selected.
- * Lower the numerical number, higher the priority
- *
-*/
-struct DataMovementInterface {
- 1: required string dataMovementInterfaceId,
- 2: required DataMovementProtocol dataMovementProtocol,
- 3: required i32 priorityOrder = 0,
-}
-
-/**
- * Computational Resource Description
- *
- * computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
- *
- * hostName:
- * Fully Qualified Host Name.
- *
- * hostAliases:
- * Aliases if any.
- *
- * ipAddress:
- * IP Addresses of the Resource.
- *
- * resourceDescription:
- * A user friendly description of the resource.
- *
- * JobSubmissionProtocols:
- * A computational resources may have one or more ways of submitting Jobs. This structure
- * will hold all available mechanisms to interact with the resource.
- * The key is the priority
- *
- * DataMovementProtocol:
- * Option to specify a prefered data movement mechanism of the available options.
- *
- * fileSystems:
- * Map of file systems type and the path.
- *
-*/
-struct ComputeResourceDescription {
-// 1: required bool isEmpty = 0,
- 1: required string computeResourceId = DEFAULT_ID,
- 2: required string hostName,
- 3: optional list<string> hostAliases,
- 4: optional list<string> ipAddresses,
- 5: optional string resourceDescription,
- 6: optional list<BatchQueue> batchQueues,
- 7: optional map<FileSystems, string> fileSystems,
- 8: optional list<JobSubmissionInterface> jobSubmissionInterfaces,
- 9: optional list<DataMovementInterface> dataMovementInterfaces,
- 10: optional i32 maxMemoryPerNode
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/experimentModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/experimentModel.thrift b/component-interface-descriptions/airavata-api/experimentModel.thrift
deleted file mode 100644
index f9d76ab..0000000
--- a/component-interface-descriptions/airavata-api/experimentModel.thrift
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * 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.
- *
- */
-
-include "computeResourceModel.thrift"
-include "applicationInterfaceModel.thrift"
-
-namespace java org.apache.airavata.model.workspace.experiment
-namespace php Airavata.Model.Workspace.Experiment
-namespace cpp apache.airavata.model.workspace.experiment
-namespace py apache.airavata.model.workspace.experiment
-
-/*
- * This file describes the definitions of the.airavata.registry.core.experiment.Data Structures. Each of the
- * language specific Airavata Client SDK's will translate this neutral data model into an
- * appropriate form for passing to the Airavata Server Execution API Calls.
- *
- * The Experiment data model is divided into 6 categories: experiment metadata, experiment configuration
- * data, experiment generated data, experiment monitoring data, provenance data and error handling data.
- *
- * Experiment Metadata:
- * this structure holds the owner of the experiment, name, description, creation and last update times,
- * last known status, and if is private to the user or shared publicly.
- * FIXME: To start with, we will not define this but populate it inferring data from other structures. This
- * structure needs revisiting once the API gets used.
- *
- * Experiment Configuration Data:
- * this structure will contain all user provided configuration data.
- *
- * Experiment Generated Data:
- * this structure describes all intermediate and output data generated by executing the experiment.
- *
- * Experiment Monitoring Data:
- * this structure contains fine grained experiment status information.
- *
- * Experiment Summary Data:
- * this is derived information from all experiment objects to provide a quick summary.
- *
-*/
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-const string DEFAULT_PROJECT_NAME = "DEFAULT"
-const string SINGLE_APP_NODE_NAME = "SINGLE_APP_NODE"
-
-enum ExperimentState {
- CREATED,
- VALIDATED,
- SCHEDULED,
- LAUNCHED,
- EXECUTING,
- CANCELING,
- CANCELED,
- SUSPENDED,
- COMPLETED,
- FAILED,
- UNKNOWN
-}
-
-enum ExperimentSearchFields {
- EXPERIMENT_NAME,
- EXPERIMENT_DESC,
- APPLICATION_ID,
- FROM_DATE,
- TO_DATE,
- STATUS
-}
-
-struct ExperimentStatus {
- 1: required ExperimentState experimentState,
- 2: optional i64 timeOfStateChange
-}
-
-enum WorkflowNodeState {
- INVOKED,
- EXECUTING,
- CANCELING,
- CANCELED,
- SUSPENDED,
- COMPLETED,
- FAILED,
- UNKNOWN
-}
-
-struct WorkflowNodeStatus {
- 1: required WorkflowNodeState workflowNodeState,
- 2: optional i64 timeOfStateChange
-}
-
-enum TaskState {
- WAITING,
- STARTED,
- PRE_PROCESSING,
- CONFIGURING_WORKSPACE,
- INPUT_DATA_STAGING,
- OUTPUT_DATA_STAGING,
- POST_PROCESSING,
- EXECUTING,
- CANCELING,
- CANCELED,
- COMPLETED,
- FAILED,
- UNKNOWN
-}
-
-struct TaskStatus {
- 1: required TaskState executionState,
- 2: optional i64 timeOfStateChange
-}
-
-enum JobState {
- SUBMITTED,
- UN_SUBMITTED,
- SETUP,
- QUEUED,
- ACTIVE,
- COMPLETE,
- CANCELING,
- CANCELED,
- FAILED,
- HELD,
- SUSPENDED,
- UNKNOWN
-}
-
-struct JobStatus {
- 1: required JobState jobState,
- 2: optional i64 timeOfStateChange
-}
-
-enum TransferState {
- DIRECTORY_SETUP,
- UPLOAD,
- DOWNLOAD,
- ACTIVE,
- COMPLETE,
- STDOUT_DOWNLOAD,
- STDERROR_DOWNLOAD,
- CANCELING,
- CANCELED,
- FAILED,
- HELD,
- SUSPENDED,
- UNKNOWN
-}
-
-struct TransferStatus {
- 1: required TransferState transferState,
- 2: optional i64 timeOfStateChange
-}
-
-struct ApplicationStatus {
- 1: required string applicationState,
- 2: optional i64 timeOfStateChange
-}
-
-enum ActionableGroup {
- RESOURCE_ADMINS,
- AIRAVATA_ADMINS,
- GATEWAYS_ADMINS,
- USER,
- CANNOT_BE_DETERMINED
-}
-
-enum ErrorCategory {
- FILE_SYSTEM_FAILURE,
- APPLICATION_FAILURE,
- RESOURCE_NODE_FAILURE,
- DISK_FULL,
- INSUFFICIENT_ALLOCATION,
- SYSTEM_MAINTENANCE,
- AIRAVATA_INTERNAL_ERROR,
- CANNOT_BE_DETERMINED
-}
-
-enum CorrectiveAction {
- RETRY_SUBMISSION,
- CONTACT_SUPPORT,
- CANNOT_BE_DETERMINED
-}
-
-/**
- * A structure holding the Computational Resource Scheduling.
- *
-*/
-struct ComputationalResourceScheduling {
- 1: optional string resourceHostId,
- 2: optional i32 totalCPUCount,
- 3: optional i32 nodeCount,
- 4: optional i32 numberOfThreads,
- 5: optional string queueName,
- 6: optional i32 wallTimeLimit,
- 7: optional i32 jobStartTime,
- 8: optional i32 totalPhysicalMemory,
- 9: optional string computationalProjectAccount,
- 10: optional string chassisName
-}
-
-/**
- * A structure holding specified input data handling.
- *
-*/
-struct AdvancedInputDataHandling {
- 1: optional bool stageInputFilesToWorkingDir = 0,
- 2: optional string parentWorkingDirectory,
- 3: optional string uniqueWorkingDirectory,
- 4: optional bool cleanUpWorkingDirAfterJob = 0
-}
-
-/**
- * A structure holding specified output data handling.
- *
-*/
-struct AdvancedOutputDataHandling {
- 2: optional string outputDataDir,
- 3: optional string dataRegistryURL,
- 4: optional bool persistOutputData = 1
-}
-
-/**
- * A structure holding Quality of Service Parameters.
- *
-*/
-struct QualityOfServiceParams {
- 1: optional string startExecutionAt,
- 2: optional string executeBefore,
- 3: optional i32 numberofRetries
-}
-
-/**
- * A structure holding the experiment configuration.
- *
- *
-*/
-struct UserConfigurationData {
- 1: required bool airavataAutoSchedule = 0,
- 2: required bool overrideManualScheduledParams = 0,
- 3: optional bool shareExperimentPublicly = 0,
- 4: optional ComputationalResourceScheduling computationalResourceScheduling,
- 5: optional AdvancedInputDataHandling advanceInputDataHandling,
- 6: optional AdvancedOutputDataHandling advanceOutputDataHandling,
- 7: optional QualityOfServiceParams qosParams,
- 8: optional bool throttleResources = 0,
- 9: optional string userDN,
- 10: optional bool generateCert = 0
-}
-
-struct ErrorDetails {
- 1: required string errorID = DEFAULT_ID,
- 2: optional i64 creationTime,
- 3: optional string actualErrorMessage,
- 4: optional string userFriendlyMessage,
- 5: optional ErrorCategory errorCategory,
- 6: optional bool transientOrPersistent = 0,
- 7: optional CorrectiveAction correctiveAction,
- 8: optional ActionableGroup actionableGroup,
- 9: optional list<string> rootCauseErrorIdList
-}
-
-struct JobDetails {
- 1: required string jobID = DEFAULT_ID,
- 2: required string jobDescription,
- 3: optional i64 creationTime,
- 4: optional JobStatus jobStatus,
- 5: optional ApplicationStatus applicationStatus,
- 6: optional list<ErrorDetails> errors,
- 7: optional string computeResourceConsumed,
- 8: optional string jobName,
- 9: optional string workingDir
-}
-
-struct DataTransferDetails {
- 1: required string transferID = DEFAULT_ID,
- 2: optional i64 creationTime,
- 3: required string transferDescription,
- 4: optional TransferStatus transferStatus,
-}
-
-/**
- * A structure holding the actual execution context decided based on user provided configuration data or system inferred
- * information from scheduling and QoS parameters. One experiment can have multiple tasks. Each tasks results in
- * data transfers and jobs
- *
-*/
-struct TaskDetails {
- 1: required string taskID = DEFAULT_ID,
- 2: optional i64 creationTime,
- 3: optional string applicationId,
- 4: optional string applicationVersion,
- 5: optional string applicationDeploymentId,
- 6: optional list<applicationInterfaceModel.InputDataObjectType> applicationInputs,
- 7: optional list<applicationInterfaceModel.OutputDataObjectType> applicationOutputs,
- 8: optional ComputationalResourceScheduling taskScheduling,
- 9: optional AdvancedInputDataHandling advancedInputDataHandling,
- 10: optional AdvancedOutputDataHandling advancedOutputDataHandling,
- 11: optional TaskStatus taskStatus,
- 12: optional list<JobDetails> jobDetailsList,
- 13: optional list<DataTransferDetails> dataTransferDetailsList,
- 14: optional list<ErrorDetails> errors,
- 15: optional bool enableEmailNotification,
- 16: optional list<string> emailAddresses,
-}
-
-enum ExecutionUnit {
- INPUT,
- APPLICATION,
- OUTPUT,
- OTHER
-}
-
-
-/**
-* A structure holding the node data.
-* nodeInstanceId - unique node identifier for each run
-*/
-struct WorkflowNodeDetails {
- 1: required string nodeInstanceId = DEFAULT_ID,
- 2: optional i64 creationTime,
- 3: required string nodeName = SINGLE_APP_NODE_NAME,
- 4: required ExecutionUnit executionUnit = ExecutionUnit.APPLICATION,
- 5: optional string executionUnitData,
- 6: optional list<applicationInterfaceModel.InputDataObjectType> nodeInputs,
- 7: optional list<applicationInterfaceModel.OutputDataObjectType> nodeOutputs,
- 8: optional WorkflowNodeStatus workflowNodeStatus,
- 9: optional list<TaskDetails> taskDetailsList,
- 10: optional list<ErrorDetails> errors
-}
-
-/**
-* This data structure can be used to store the validation results
-* captured during validation step and during the launchExperiment
-* operation it can be easilly checked to see the errors occured
-* during the experiment launch operation
-**/
-
-struct ValidatorResult {
- 1: required bool result,
- 2: optional string errorDetails
-}
-
-
-struct ValidationResults {
- 1: required bool validationState,
- 2: required list<ValidatorResult> validationResultList
-}
-/**
- * A structure holding the experiment metadata and its child models.
- *
- * userName:
- * The user name of the targeted gateway end user on whose behalf the experiment is being created.
- * the associated gateway identity can only be inferred from the security hand-shake so as to avoid
- * authorized Airavata Clients mimicking an unauthorized request. If a gateway is not registered with
- * Airavata, an authorization exception is thrown.
- *
- * experimentName:
- * The name of the experiment as defined by the user. The name need not be unique as uniqueness is enforced
- * by the generated experiment id.
- *
- * experimentDescription:
- * The verbose description of the experiment. This is an optional parameter.
-*/
-
-struct Experiment {
- 1: required string experimentID = DEFAULT_ID,
- 2: required string projectID = DEFAULT_PROJECT_NAME,
- 3: optional i64 creationTime,
- 4: required string userName,
- 5: required string name,
- 6: optional string description,
- 7: optional string applicationId,
- 8: optional string applicationVersion,
- 9: optional string workflowTemplateId,
- 10: optional string workflowTemplateVersion,
- 11: optional string gatewayExecutionId,
- 12: optional bool enableEmailNotification,
- 13: optional list<string> emailAddresses,
- 14: optional UserConfigurationData userConfigurationData,
- 15: optional string workflowExecutionInstanceId,
- 16: optional list<applicationInterfaceModel.InputDataObjectType> experimentInputs,
- 17: optional list<applicationInterfaceModel.OutputDataObjectType> experimentOutputs,
- 18: optional ExperimentStatus experimentStatus,
- 19: optional list<WorkflowNodeStatus> stateChangeList,
- 20: optional list<WorkflowNodeDetails> workflowNodeDetailsList,
- 21: optional list<ErrorDetails> errors
-}
-
-struct ExperimentSummary {
- 1: required string experimentID,
- 2: required string projectID,
- 3: optional i64 creationTime,
- 4: required string userName,
- 5: required string name,
- 6: optional string description,
- 7: optional string applicationId,
- 8: optional ExperimentStatus experimentStatus,
-}
-
-struct ExperimentStatistics {
- 1: required i32 allExperimentCount,
- 2: required i32 completedExperimentCount,
- 3: optional i32 cancelledExperimentCount,
- 4: required i32 failedExperimentCount,
- 5: required list<ExperimentSummary> allExperiments,
- 6: optional list<ExperimentSummary> completedExperiments,
- 7: optional list<ExperimentSummary> failedExperiments,
- 8: optional list<ExperimentSummary> cancelledExperiments,
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/gatewayResourceProfileModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/gatewayResourceProfileModel.thrift b/component-interface-descriptions/airavata-api/gatewayResourceProfileModel.thrift
deleted file mode 100644
index 11a6586..0000000
--- a/component-interface-descriptions/airavata-api/gatewayResourceProfileModel.thrift
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.
- *
- */
-
-namespace java org.apache.airavata.model.appcatalog.gatewayprofile
-namespace php Airavata.Model.AppCatalog.GatewayProfile
-namespace cpp apache.airavata.model.appcatalog.gatewayprofile
-namespace py apache.airavata.model.appcatalog.gatewayprofile
-
-include "computeResourceModel.thrift"
-
-/**
- * Gateway specific preferences for a Computer Resource
- *
- * computeResourceId:
- * Corelate the preference to a compute resource.
- *
- * overridebyAiravata:
- * If turned true, Airavata will override the preferences of better alternatives exist.
- *
- * loginUserName:
- * If turned true, Airavata will override the preferences of better alternatives exist.
- *
- * preferredJobSubmissionProtocol:
- * For resources with multiple job submission protocols, the gateway can pick a preferred option.
- *
- * preferredDataMovementProtocol:
- * For resources with multiple data movement protocols, the gateway can pick a preferred option.
- *
- * preferredBatchQueue:
- * Gateways can choose a defualt batch queue based on average job dimention, reservations or other metrics.
- *
- * scratchLocation:
- * Path to the local scratch space on a HPC cluster. Typically used to create working directory for job execution.
- *
- * allocationProjectNumber:
- * Typically used on HPC machines to charge computing usage to a account number. For instance, on XSEDE once an
- * allocation is approved, an allocation number is assigned. Before passing this number with job submittions, the
- * account to be used has to be added to the allocation.
- *
-*/
-struct ComputeResourcePreference {
- 1: required string computeResourceId,
- 2: required bool overridebyAiravata = 1,
- 3: optional string loginUserName,
- 4: optional computeResourceModel.JobSubmissionProtocol preferredJobSubmissionProtocol,
- 5: optional computeResourceModel.DataMovementProtocol preferredDataMovementProtocol,
- 6: optional string preferredBatchQueue,
- 7: optional string scratchLocation,
- 8: optional string allocationProjectNumber
-}
-
-/**
- * Gateway Resource Profile
- *
- * gatewayID:
- * Unique identifier for the gateway assigned by Airavata. Corelate this to Airavata Admin API Gateway Registration.
- *
- * computeResourcePreferences:
- * List of resource preferences for each of the registered compute resources.
- *
- *
-*/
-struct GatewayResourceProfile {
- 1: required string gatewayID,
- 2: optional list<ComputeResourcePreference> computeResourcePreferences
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/generate-thrift-files.sh
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/generate-thrift-files.sh b/component-interface-descriptions/airavata-api/generate-thrift-files.sh
deleted file mode 100755
index 30046c9..0000000
--- a/component-interface-descriptions/airavata-api/generate-thrift-files.sh
+++ /dev/null
@@ -1,305 +0,0 @@
-#! /usr/bin/env bash
-
-# 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.
-
-# This script will generate/regenerate the thrift code for Airavata Server Skeletons, Client Stubs
-# and Data Model java beans in java, C++, PHP and Python.
-
-show_usage() {
- echo -e "Usage: $0 [Languague to generate stubs]"
- echo ""
- echo "options:"
- echo -e "\tjava Generate/Update Java Stubs"
- echo -e "\tphp Generate/Update PHP Stubs"
- echo -e "\tcpp Generate/Update C++ Stubs"
- echo -e "\tpython Generate/Update Python Stubs."
- echo -e "\tall Generate/Update all stubs (Java, PHP, C++, Python)."
- echo -e "\t-h[elp] Print the usage options of this script"
-}
-
-if [ $# -lt 1 ]
-then
- show_usage
- exit 1
-fi
-
-if [[ $1 == "-h" ||$1 == "--help" ]]
-then
- show_usage
- exit 0
-fi
-
-# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
-# Verify is thrift is installed, is in the path is at a specified version.
-
-REQUIRED_THRIFT_VERSION='0.9.2'
-THRIFT_EXEC=/usr/local/bin/thrift
-
-VERSION=$($THRIFT_EXEC -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" | wc -l)
-if [ "$VERSION" -ne 1 ] ; then
- echo -e "ERROR:\t Apache Thrift version ${REQUIRED_THRIFT_VERSION} is required."
- echo -e "It is either not installed or is not in the path"
- exit 1
-fi
-
-# Global Constants used across the script
-THRIFT_IDL_DIR='thrift-interface-descriptions'
-BASE_TARGET_DIR='target'
-DATAMODEL_SRC_DIR='../airavata-api/airavata-data-models/src/main/java'
-JAVA_API_SDK_DIR='../airavata-api/airavata-api-stubs/src/main/java'
-PHP_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib'
-CPP_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/'
-PYTHON_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/'
-
-# Initialize the thrift arguments.
-# Since most of the Airavata API and Data Models have includes, use recursive option by default.
-# Generate all the files in target directory
-THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
-# Ensure the required target directories exists, if not create.
-mkdir -p ${BASE_TARGET_DIR}
-
-# The Function fail prints error messages on failure and quits the script.
-fail() {
- echo $@
- exit 1
-}
-
-# The function add_license_header adds the ASF V2 license header to all java files within the specified generated
-# directory. The function also adds suppress all warnings annotation to all public classes and enum's
-# To Call:
-# add_license_header $generated_code_directory
-add_license_header() {
-
- # Fetch the generated code directory passed as the argument
- GENERATED_CODE_DIR=$1
-
- # For all generated thrift code, add the suppress all warnings annotation
- # NOTE: In order to save the original file as a backup, use sed -i.orig in place of sed -i ''
- find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public class /@SuppressWarnings("all") public class /'
- find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public enum /@SuppressWarnings("all") public enum /'
-
- # For each source file within the generated directory, add the ASF V2 LICENSE header
- FILE_SUFFIXES=(.php .java .h .cpp)
- for file in "${FILE_SUFFIXES[@]}"; do
- for f in $(find ${GENERATED_CODE_DIR} -name "*$file"); do
- cat - ${f} >${f}-with-license <<EOF
-/**
- * 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.
- */
-
-EOF
- mv ${f}-with-license ${f}
- done
- done
-}
-
-# The function compares every generated java file with the one in specified existing source location. If the comparison
-# shows a difference, then it replaces with the newly generated file (with added license header).
-# To Call:
-# copy_changed_files $generated_code_directory $existing_source_directory
-copy_changed_files() {
-
- # Read all the function arguments
- GENERATED_CODE_DIR=$1
- WORKSPACE_SRC_DIR=$2
-
- echo "Generated sources are in ${GENERATED_CODE_DIR}"
- echo "Destination workspace is in ${WORKSPACE_SRC_DIR}"
-
- # Check if the newly generated files exist in the targeted workspace, if not copy. Only changed files will be synced.
- # the extra slash to GENERATED_CODE_DIR is needed to ensure the parent directory itself is not copied.
- rsync -auv ${GENERATED_CODE_DIR}/ ${WORKSPACE_SRC_DIR}
-}
-
-#######################################
-# Generate/Update Airavata Data Model #
-#######################################
-
-generate_java_stubs() {
-
- #Java Beans generation directory
- JAVA_BEAN_GEN_DIR=${BASE_TARGET_DIR}/gen-javabean
-
- # As a precaution remove and previously generated files if exists
- rm -rf ${JAVA_BEAN_GEN_DIR}
-
- # Generate the Airavata Data Model using thrift Java Beans generator. This will take generate the classes in bean style
- # with members being private and setters returning voids.
- # The airavataDataModel.thrift includes rest of data models.
- $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${THRIFT_IDL_DIR}/airavataDataModel.thrift || fail unable to generate java bean thrift classes on base data model
-
- $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${THRIFT_IDL_DIR}/appCatalogModels.thrift || fail unable to generate java bean thrift classes on app catalog data models
-
- $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${THRIFT_IDL_DIR}/workflowDataModel.thrift || fail unable to generate java bean thrift classes on app workflow data models
-
- # For the generated java beans add the ASF V2 License header
- add_license_header $JAVA_BEAN_GEN_DIR
-
- # Compare the newly generated beans with existing sources and replace the changed ones.
- copy_changed_files ${JAVA_BEAN_GEN_DIR} ${DATAMODEL_SRC_DIR}
-
- ###############################################################################
- # Generate/Update source used by Airavata Server Skeletons & Java Client Stubs #
- # JAVA server and client both use generated api-boilerplate-code #
- ###############################################################################
-
- #Java generation directory
- JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
-
- # As a precaution remove and previously generated files if exists
- rm -rf ${JAVA_GEN_DIR}
-
- # Using thrift Java generator, generate the java classes based on Airavata API. This
- # The airavataAPI.thrift includes rest of data models.
- $THRIFT_EXEC ${THRIFT_ARGS} --gen java ${THRIFT_IDL_DIR}/airavataAPI.thrift || fail unable to generate java thrift classes on AiravataAPI
-
- #$THRIFT_EXEC ${THRIFT_ARGS} --gen java ${THRIFT_IDL_DIR}/workflowAPI.thrift || fail unable to generate java thrift classes on WorkflowAPI
-
- # For the generated java classes add the ASF V2 License header
- add_license_header $JAVA_GEN_DIR
-
- # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
- # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
- copy_changed_files ${JAVA_GEN_DIR}/org/apache/airavata/api ${JAVA_API_SDK_DIR}/org/apache/airavata/api
-
- echo "Successfully generated new java sources, compared against exiting code and replaced the changed files"
-}
-
-####################################
-# Generate/Update PHP Stubs #
-####################################
-
-generate_php_stubs() {
-
- #PHP generation directory
- PHP_GEN_DIR=${BASE_TARGET_DIR}/gen-php
-
- # As a precaution remove and previously generated files if exists
- rm -rf ${PHP_GEN_DIR}
-
- # Using thrift Java generator, generate the java classes based on Airavata API. This
- # The airavataAPI.thrift includes rest of data models.
- $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${THRIFT_IDL_DIR}/airavataAPI.thrift || fail unable to generate PHP thrift classes
-
- #$THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${THRIFT_IDL_DIR}/workflowAPI.thrift || fail unable to generate PHP thrift classes for WorkflowAPI
- # For the generated java classes add the ASF V2 License header
- ## TODO Write PHP license parser
-
- # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
- # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
- copy_changed_files ${PHP_GEN_DIR} ${PHP_SDK_DIR}
-
-}
-
-####################################
-# Generate/Update C++ Client Stubs #
-####################################
-
-generate_cpp_stubs() {
-
- #CPP generation directory
- CPP_GEN_DIR=${BASE_TARGET_DIR}/gen-cpp
-
- # As a precaution remove and previously generated files if exists
- rm -rf ${CPP_GEN_DIR}
-
- # Using thrift Java generator, generate the java classes based on Airavata API. This
- # The airavataAPI.thrift includes rest of data models.
- $THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${THRIFT_IDL_DIR}/airavataAPI.thrift || fail unable to generate C++ thrift classes
-
- #$THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${THRIFT_IDL_DIR}/workflowAPI.thrift || fail unable to generate C++ thrift classes for WorkflowAPI
- # For the generated CPP classes add the ASF V2 License header
- add_license_header $CPP_GEN_DIR
-
- # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
- # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
- copy_changed_files ${CPP_GEN_DIR} ${CPP_SDK_DIR}
-
-}
-
-####################################
-# Generate/Update C++ Client Stubs #
-####################################
-
-generate_python_stubs() {
-
- #Python generation directory
- PYTHON_GEN_DIR=${BASE_TARGET_DIR}/gen-py
-
- # As a precaution remove and previously generated files if exists
- rm -rf ${PYTHON_GEN_DIR}
-
- # Using thrift Python generator, generate the python classes based on Airavata API. This
- # The airavataAPI.thrift includes rest of data models.
- $THRIFT_EXEC ${THRIFT_ARGS} --gen py ${THRIFT_IDL_DIR}/airavataAPI.thrift || fail unable to generate Python thrift classes
-
- # For the generated CPP classes add the ASF V2 License header
- #add_license_header #PYTHON_GEN_DIR
-
- # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
- # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
- copy_changed_files ${PYTHON_GEN_DIR} ${PYTHON_SDK_DIR}
-
-}
-
-for arg in "$@"
-do
- case "$arg" in
- all) echo "Generate all stubs (Java, PHP, C++, Python) Stubs"
- generate_java_stubs
- generate_php_stubs
- generate_cpp_stubs
- generate_python_stubs
- ;;
- java) echo "Generating Java Stubs"
- generate_java_stubs
- ;;
- php) echo "Generate PHP Stubs"
- generate_php_stubs
- ;;
- cpp) echo "Generate C++ Stubs"
- generate_cpp_stubs
- ;;
- python) echo "Generate Python Stubs"
- generate_python_stubs
- ;;
- *) echo "Invalid or unsupported option"
- show_usage
- exit 1
- ;;
- esac
-done
-
-####################
-# Cleanup and Exit #
-####################
-# CleanUp: Delete the base target build directory
-#rm -rf ${BASE_TARGET_DIR}
-
-exit 0
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/messagingEvents.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/messagingEvents.thrift b/component-interface-descriptions/airavata-api/messagingEvents.thrift
deleted file mode 100644
index 29cdd2e..0000000
--- a/component-interface-descriptions/airavata-api/messagingEvents.thrift
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.
- *
- */
-
-include "experimentModel.thrift"
-include "applicationInterfaceModel.thrift"
-
-namespace java org.apache.airavata.model.messaging.event
-namespace php Airavata.Model.Messaging.Event
-namespace cpp apache.airavata.model.messaging.event
-namespace py apache.airavata.model.messaging.event
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-enum MessageLevel {
- INFO,
- DEBUG,
- ERROR,
- ACK
-}
-
-enum MessageType {
- EXPERIMENT,
- TASK,
- WORKFLOWNODE,
- JOB,
- LAUNCHTASK,
- TERMINATETASK,
- TASKOUTPUT
-}
-
-struct ExperimentStatusChangeEvent {
- 1: required experimentModel.ExperimentState state;
- 2: required string experimentId;
- 3: required string gatewayId;
-}
-
-struct WorkflowIdentifier {
- 1: required string workflowNodeId;
- 2: required string experimentId;
- 3: required string gatewayId;
-}
-
-struct WorkflowNodeStatusChangeEvent {
- 1: required experimentModel.WorkflowNodeState state;
- 2: required WorkflowIdentifier workflowNodeIdentity;
-}
-
-struct TaskIdentifier {
- 1: required string taskId;
- 2: required string workflowNodeId;
- 3: required string experimentId;
- 4: required string gatewayId;
-}
-
-struct TaskStatusChangeEvent {
- 1: required experimentModel.TaskState state;
- 2: required TaskIdentifier taskIdentity;
-}
-
-struct TaskStatusChangeRequestEvent {
- 1: required experimentModel.TaskState state;
- 2: required TaskIdentifier taskIdentity;
-}
-
-struct TaskOutputChangeEvent {
- 1: required list<applicationInterfaceModel.OutputDataObjectType> output;
- 2: required TaskIdentifier taskIdentity;
-}
-
-struct JobIdentifier {
- 1: required string jobId;
- 2: required string taskId;
- 3: required string workflowNodeId;
- 4: required string experimentId;
- 5: required string gatewayId;
-}
-
-//struct JobMonitor {
-// 1: optional string username;
-// 2: optional i64 jobStartedTime;
-// 3: optional i64 lastMonitoredTime;
-// 4: optional string hostId;
-// 5: optional map<string, string> parameters;
-// 6: optional string jobName;
-// 7: optional i32 failedCount = 0;
-// // FIXME - Job execution context
-// //8:
-// }
-
-struct ProcessSubmitEvent{
- 1: required string taskId;
- 2: required string credentialToken;
-}
-
-struct TaskSubmitEvent{
- 1: required string experimentId,
- 2: required string taskId,
- 3: required string gatewayId,
- 4: required string tokenId
-}
-
-struct TaskTerminateEvent{
- 1: required string experimentId,
- 2: required string taskId,
- 3: required string gatewayId,
- 4: required string tokenId
-}
-
-struct JobStatusChangeEvent {
- 1: required experimentModel.JobState state;
- 2: required JobIdentifier jobIdentity;
-}
-
-struct JobStatusChangeRequestEvent {
- 1: required experimentModel.JobState state;
- 2: required JobIdentifier jobIdentity;
-}
-
-struct Message {
- 1: required binary event;
- 2: required string messageId = DEFAULT_ID;
- 3: required MessageType messageType;
- 4: optional i64 updatedTime;
- 5: optional MessageLevel messageLevel;
-}
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/securityModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/securityModel.thrift b/component-interface-descriptions/airavata-api/securityModel.thrift
deleted file mode 100644
index bda9554..0000000
--- a/component-interface-descriptions/airavata-api/securityModel.thrift
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.
- *
- */
-
-namespace java org.apache.airavata.model.security
-namespace php Airavata.Model.Security
-namespace cpp apache.airavata.model.security
-namespace py apache.airavata.model.security
-
-/*
- * This file describes the definitions of the security model which encapsulates the information that needs to be passed
- to the API methods in order to authenticate and authorize the users.
- *
-*/
-
-struct AuthzToken {
- 1: required string accessToken,
- 2: optional map<string, string> claimsMap
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/workflowAPI.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/workflowAPI.thrift b/component-interface-descriptions/airavata-api/workflowAPI.thrift
deleted file mode 100644
index 9aa4a88..0000000
--- a/component-interface-descriptions/airavata-api/workflowAPI.thrift
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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 "airavataErrors.thrift"
-include "airavataDataModel.thrift"
-include "experimentModel.thrift"
-include "workspaceModel.thrift"
-include "computeResourceModel.thrift"
-include "applicationDeploymentModel.thrift"
-include "applicationInterfaceModel.thrift"
-include "workflowDataModel.thrift"
-
-namespace java org.apache.airavata.api.workflow
-namespace php Airavata.API.Workflow
-namespace cpp airavata.api.workflow
-namespace perl AiravataWorkflowAPI
-namespace py apache.airavata.api.workflow
-namespace js AiravataWorkflowAPI
-
-const string AIRAVATA_API_VERSION = "0.15.0"
-
-service Workflow {
-
- list<string> getAllWorkflows()
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- workflowDataModel.Workflow getWorkflow (1: required string workflowTemplateId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- void deleteWorkflow (1: required string workflowTemplateId)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- string registerWorkflow(1: required workflowDataModel.Workflow workflow)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- void updateWorkflow (1: required string workflowTemplateId, 2: required workflowDataModel.Workflow workflow)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- string getWorkflowTemplateId (1: required string workflowName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
-
- bool isWorkflowExistWithName(1: required string workflowName)
- throws (1: airavataErrors.InvalidRequestException ire,
- 2: airavataErrors.AiravataClientException ace,
- 3: airavataErrors.AiravataSystemException ase)
- }
-
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/workflowDataModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/workflowDataModel.thrift b/component-interface-descriptions/airavata-api/workflowDataModel.thrift
deleted file mode 100644
index 68d60cd..0000000
--- a/component-interface-descriptions/airavata-api/workflowDataModel.thrift
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- *
- */
-
-
-namespace java org.apache.airavata.model
-namespace php Airavata.Model
-namespace py apache.airavata.model.workflow
-
-include "applicationInterfaceModel.thrift"
-
-/*
- * This file describes the definitions of the Airavata Execution Data Structures. Each of the
- * language specific Airavata Client SDK's will translate this neutral data model into an
- * appropriate form for passing to the Airavata Server Execution API Calls.
-*/
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-struct Workflow {
- 1: required string templateId = DEFAULT_ID,
- 2: required string name,
- 3: optional string graph,
- 4: optional binary image,
- 5: optional list<applicationInterfaceModel.InputDataObjectType> workflowInputs,
- 6: optional list<applicationInterfaceModel.OutputDataObjectType> workflowOutputs
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/airavata-api/workspaceModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/airavata-api/workspaceModel.thrift b/component-interface-descriptions/airavata-api/workspaceModel.thrift
deleted file mode 100644
index 803cea8..0000000
--- a/component-interface-descriptions/airavata-api/workspaceModel.thrift
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.
- *
- */
-
-include "experimentModel.thrift"
-
-namespace java org.apache.airavata.model.workspace
-namespace php Airavata.Model.Workspace
-namespace cpp apache.airavata.model.workspace
-namespace py apache.airavata.model.workspace
-
-/*
- * This file describes the definitions of the Airavata Workspace. The workspace is a container for all user data
- * organized as Projects and Experiment within them.
- *
- * The Experiment data model is divided into 6 categories: experiment metadata, experiment configuration
- * data, experiment generated data, experiment monitoring data, provenance data and error handling data.
- *
- *
-*/
-
-struct Group {
- 1: required string groupName,
- 2: optional string description
-}
-
-struct Project {
- 1: required string projectID = experimentModel.DEFAULT_PROJECT_NAME,
- 2: required string owner,
- 3: required string name,
- 4: optional string description
- 5: optional i64 creationTime
- 6: optional list<string> sharedUsers,
- 7: optional list<string> sharedGroups
-}
-
-struct User {
- 1: required string userName,
- 2: optional list<Group> groupList
-}
-
-struct Gateway {
- 1: required string gatewayId,
- 2: optional string gatewayName,
- 3: optional string domain,
- 4: optional string emailAddress
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/gfac/generate-gfac-stubs.sh
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/gfac/generate-gfac-stubs.sh b/component-interface-descriptions/gfac/generate-gfac-stubs.sh
deleted file mode 100755
index 9e7483d..0000000
--- a/component-interface-descriptions/gfac/generate-gfac-stubs.sh
+++ /dev/null
@@ -1,134 +0,0 @@
-#! /usr/bin/env bash
-
-# 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.
-
-# This script will regenerate the thrift code for Airavata GFAC Server Skeltons and Client Stubs.
-
-
-# Global Constants used across the script
-REQUIRED_THRIFT_VERSION='0.9.2'
-BASE_TARGET_DIR='target'
-GFAC_SERVICE_DIR='../../modules/gfac/gfac-client/src/main/java/'
-
-# The Funcation fail prints error messages on failure and quits the script.
-fail() {
- echo $@
- exit 1
-}
-
-# The funcation add_license_header adds the ASF V2 license header to all java files within the specified generated
-# directory. The funcation also adds suppress all warnings annotation to all public classes and enum's
-# To Call:
-# add_license_header $generated_code_directory
-add_license_header() {
-
- # Fetch the generated code directory passed as the argument
- GENERATED_CODE_DIR=$1
-
- # For all generated thrift code, add the suppress all warnings annotation
- # NOTE: In order to save the orginal file as a backup, use sed -i.orig in place of sed -i ''
- find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public class /@SuppressWarnings("all") public class /'
- find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public enum /@SuppressWarnings("all") public enum /'
-
- # For each java file within the genrated directory, add the ASF V2 LICENSE header
- for f in $(find ${GENERATED_CODE_DIR} -name '*.java'); do
- cat - ${f} >${f}-with-license <<EOF
- /*
- * 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.
- */
-EOF
- mv ${f}-with-license ${f}
- done
-}
-
-# The funcation compares every generated java file with the one in specified existing source location. If the comparision
-# shows a difference, then it replaces with the newly generated file (with added license header).
-# To Call:
-# copy_changed_files $generated_code_directory $existing_source_directory
-copy_changed_files() {
-
- # Read all the funcation arguments
- GENERATED_CODE_DIR=$1
- WORKSPACE_SRC_DIR=$2
-
- echo "Generated sources are in ${GENERATED_CODE_DIR}"
- echo "Destination workspace is in ${WORKSPACE_SRC_DIR}"
-
- # Check if the newly generated files exist in the targetted workspace, if not copy. Only changed files will be synced.
- # the extra slash to GENERATED_CODE_DIR is needed to ensure the parent directory itself is not copied.
- rsync -auv ${GENERATED_CODE_DIR}/ ${WORKSPACE_SRC_DIR}
-}
-
-# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
-# Verify is thrift is installed, is in the path is at a specified version.
-VERSION=$(thrift -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" | wc -l)
-if [ "$VERSION" -ne 1 ] ; then
- echo "****************************************************"
- echo "*** thrift is not installed or is not in the path"
- echo "*** expecting 'thrift -version' to return ${REQUIRED_THRIFT_VERSION}"
- echo "*** generated code will not be updated"
- fail "****************************************************"
-fi
-
-# Initialize the thrift arguements.
-# Since most of the Airavata API and Data Models have includes, use recursive option by defualt.
-# Generate all the files in target directory
-THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
-# Ensure the required target directories exists, if not create.
-mkdir -p ${BASE_TARGET_DIR}
-
-#######################################################################
-# Generate/Update the GFAC CPI service stubs
-# To start with both the servicer and client are in same package, but
-# needs to be split using a common generated api-boilerplate-code
-#######################################################################
-
-#Java generation directory
-JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
-
-# As a precausion remove and previously generated files if exists
-rm -rf ${JAVA_GEN_DIR}
-
-# Using thrify Java generator, generate the java classes based on Airavata API. This
-# The airavataAPI.thrift includes rest of data models.
-thrift ${THRIFT_ARGS} --gen java gfac.cpi.service.thrift || fail unable to generate java thrift classes
-thrift ${THRIFT_ARGS} --gen java gfacDataModel.thrift || fail unable to generate java thrift classes
-
-
-# For the generated java classes add the ASF V2 License header
-add_license_header $JAVA_GEN_DIR
-
-# Compare the newly generated classes with existing java generated skelton/stub sources and replace the changed ones.
-copy_changed_files ${JAVA_GEN_DIR} ${GFAC_SERVICE_DIR}
-
-# CleanUp: Delete the base target build directory
-#rm -rf ${BASE_TARGET_DIR}
-
-echo "Successfully generated new sources, compared against exiting code and replaced the changed files"
-exit 0
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/gfac/gfac.cpi.service.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/gfac/gfac.cpi.service.thrift b/component-interface-descriptions/gfac/gfac.cpi.service.thrift
deleted file mode 100644
index 93d62c7..0000000
--- a/component-interface-descriptions/gfac/gfac.cpi.service.thrift
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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 GFac Service.
- *
-*/
-
-namespace java org.apache.airavata.gfac.cpi
-
-const string GFAC_CPI_VERSION = "0.13.0"
-
-service GfacService {
-
- /** Query gfac server to fetch the CPI version */
- string getGFACServiceVersion(),
-
- /**
- * After creating the experiment Data and Task Data in the orchestrator
- * Orchestrator has to invoke this operation for each Task per experiment to run
- * the actual Job related actions.
- *
- * @param experimentID
- * @param taskID
- * @param gatewayId:
- * The GatewayId is inferred from security context and passed onto gfac.
- * @return sucess/failure
- *
- **/
- bool submitJob (1: required string experimentId,
- 2: required string taskId
- 3: required string gatewayId,
- 4: required string tokenId)
-
- /**
- *
- * Terminate the running job.At this point user
- * does not have to know the job ID so in the argument
- * we do not make it to required jobID to provide.
- *
- *
- * @param experimentID
- * @param taskID
- * @return sucess/failure
- *
- **/
- bool cancelJob (1: required string experimentId,
- 2: required string taskId,
- 3: required string gatewayId,
- 4: required string tokenId)
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/gfac/gfacDataModel.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/gfac/gfacDataModel.thrift b/component-interface-descriptions/gfac/gfacDataModel.thrift
deleted file mode 100644
index 883528e..0000000
--- a/component-interface-descriptions/gfac/gfacDataModel.thrift
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- *
- */
-
-include "applicationCatalogDataModel.thrift"
-
-namespace java org.apache.airavata.gfac.states
-
-/*
- * This file describes the definitions of the Gfac Framework level Experiment Data Structures. Each of the
- * language specific Airavata Client SDK's will translate this neutral data model into an
- * appropriate form for passing to the Airavata Server Execution API Calls.
- *
- * This data-model will not be visible to the outside users but it will be used inside GFAc to recover
- * the failed jobs or hanged jobs.
- *
-*/
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-const string DEFAULT_PROJECT_NAME = "DEFAULT"
-const string SINGLE_APP_NODE_NAME = "SINGLE_APP_NODE"
-
-enum GfacExperimentState {
- LAUNCHED,
- ACCEPTED,
- INHANDLERSINVOKING,
- INHANDLERSINVOKED,
- PROVIDERINVOKING,
- JOBSUBMITTED,
- PROVIDERINVOKED,
- OUTHANDLERSINVOKING,
- OUTHANDLERSINVOKED,
- COMPLETED,
- FAILED,
- UNKNOWN
-}
-
-enum GfacHandlerState {
- INVOKING,
- INVOKED,
- COMPLETED,
- UNKNOWN
-}
-
-struct GfacExperimentStatus {
- 1: required GfacExperimentState gfacExperimentState,
- 2: optional i64 timeOfStateChange
-}
[3/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/airavata-api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/airavata-api.thrift b/thrift-interface-descriptions/airavata-api/airavata-api.thrift
new file mode 100644
index 0000000..0a8a677
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/airavata-api.thrift
@@ -0,0 +1,2079 @@
+/*
+ * 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 "airavata-data-models.thrift"
+include "experiment-model.thrift"
+include "workspace-model.thrift"
+include "compute-resource-model.thrift"
+include "application-deployment-model.thrift"
+include "application-interface-model.thrift"
+include "gateway-resource-profile-model.thrift"
+include "workflow-data-model.thrift"
+include "security-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.
+ *
+*/
+const string AIRAVATA_API_VERSION = "0.15.0"
+
+service Airavata {
+
+/**
+ * Apache Airavata API Service Methods. For data structures associated in the signatures, please see included thrift files
+*/
+
+ /**
+ * Fetch Apache Airavata API version
+ */
+ string getAPIVersion(1: required securityModel.AuthzToken authzToken)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase,
+ 4: airavataErrors.AuthorizationException ae)
+
+ string addGateway(1: required workspaceModel.Gateway gateway)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ void updateGateway(1: required string gatewayId, 2: required workspaceModel.Gateway updatedGateway)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ workspaceModel.Gateway getGateway(1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool deleteGateway(1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ list<workspaceModel.Gateway> getAllGateways()
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool isGatewayExist(1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * Airavata Adminstrative Funcationality
+ **/
+
+
+ /**
+ * 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 string gatewayId, 2: required string userName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ string getSSHPubKey (1: required string airavataCredStoreToken)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ map<string, string> getAllUserSSHPubKeys (1: required string userName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Creates a Project with basic metadata.
+ * A Project is a container of experiments.
+ *
+ * @param gatewayId
+ * The identifier for the requested gateway.
+ *
+ * @param Project
+ * The Project Object described in the workspaceModel
+ *
+ */
+ string createProject (1: required string gatewayId,
+ 2: required workspaceModel.Project project)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Update a Project
+ *
+ */
+ void updateProject (1: required string projectId,
+ 2: required workspaceModel.Project updatedProject)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase,
+ 4: airavataErrors.ProjectNotFoundException pnfe)
+
+/**
+ * Get a Project by ID
+ *
+ */
+ workspaceModel.Project getProject (1: required string projectId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase,
+ 4: airavataErrors.ProjectNotFoundException pnfe)
+
+ bool deleteProject (1: required string projectId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase,
+ 4: airavataErrors.ProjectNotFoundException pnfe)
+
+ /**
+ * Get all Project by user
+ *
+ * @param gatewayId
+ * The identifier for the requested gateway.
+ *
+ * @param userName
+ * The Project Object described in the workspaceModel
+ * @deprecated Instead use getAllUserProjectsWithPagination
+ **/
+ list<workspaceModel.Project> getAllUserProjects (1: required string gatewayId,
+ 2: required string userName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get all Project by 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<workspaceModel.Project> getAllUserProjectsWithPagination (1: required string gatewayId,
+ 2: required string userName,
+ 3: required i32 limit,
+ 4: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get all Project for user by project name
+ *
+ * @param gatewayId
+ * The identifier for the requested gateway.
+ * @param userName
+ * The identifier of the user
+ * @param projectName
+ * The name of the project on which the results to be fetched
+ * @deprecated Instead use searchProjectsByProjectNameWithPagination
+ */
+ list<workspaceModel.Project> searchProjectsByProjectName (1: required string gatewayId,
+ 2: required string userName, 3: required string projectName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get all Project for user by project name 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 projectName
+ * The name of the project on which the results to be fetched
+ * @param limit
+ * The amount results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<workspaceModel.Project> searchProjectsByProjectNameWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required string projectName,4: required i32 limit,
+ 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get all Project for user by project description
+ * @param gatewayId
+ * The identifier for the requested gateway.
+ * @param userName
+ * The identifier of the user
+ * @param description
+ * The description to be matched
+ * @deprecated Instead use searchProjectsByProjectDescWithPagination
+ */
+ list<workspaceModel.Project> searchProjectsByProjectDesc (1: required string gatewayId,
+ 2: required string userName, 3: required string description)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search and get all Projects for user by project description 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 description
+ * The description to be matched
+ * @param limit
+ * The amount results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<workspaceModel.Project> searchProjectsByProjectDescWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required string description, 4: required i32 limit,
+ 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * Search Experiments by experiment name
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param useNname
+ * Username of the requested user
+ * @param expName
+ * Experiment name to be matched
+ * @deprecated
+ * Instead use searchExperimentsByNameWithPagination
+ *
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByName (1: required string gatewayId,
+ 2: required string userName, 3: required string expName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search Experiments by experiment name with pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param expName
+ * Experiment name to be matched
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByNameWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required string expName, 4: required i32 limit,
+ 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search Experiments by experiment name
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param description
+ * Experiment description to be matched
+ * @deprecated
+ * Instead use searchExperimentsByDescWithPagination
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByDesc (1: required string gatewayId,
+ 2: required string userName, 3: required string description)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search Experiments by experiment name with pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param description
+ * Experiment description to be matched
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByDescWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required string description, 4: required i32 limit,
+ 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * Search Experiments by application id
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param applicationId
+ * Application id to be matched
+ * @deprecated
+ * Instead use searchExperimentsByApplicationWithPagination
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByApplication (1: required string gatewayId,
+ 2: required string userName, 3: required string applicationId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+ /**
+ * Search Experiments by application id with pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param applicationId
+ * Application id to be matched
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByApplicationWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required string applicationId, 4: required i32 limit,
+ 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+ /**
+ * Search Experiments by experiment status
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param experimentState
+ * Experiement state to be matched
+ * @deprecated
+ * Instead use searchExperimentsByStatusWithPagination
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByStatus (1: required string gatewayId,
+ 2: required string userName, 3: required experimentModel.ExperimentState experimentState)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search Experiments by experiment status with pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param experimentState
+ * Experiement state to be matched
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByStatusWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required experimentModel.ExperimentState experimentState,
+ 4: required i32 limit, 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search Experiments by experiment creation time
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param fromTime
+ * Start time of the experiments creation time
+ * @param toTime
+ * End time of the experiement creation time
+ * @deprecated
+ * Instead use searchExperimentsByCreationTimeWithPagination
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByCreationTime (1: required string gatewayId,
+ 2: required string userName, 3: required i64 fromTime, 4: required i64 toTime)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Search Experiments by experiment creation time with pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param userName
+ * Username of the requested user
+ * @param fromTime
+ * Start time of the experiments creation time
+ * @param toTime
+ * End time of the experiement creation time
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.ExperimentSummary> searchExperimentsByCreationTimeWithPagination (1: required string gatewayId,
+ 2: required string userName, 3: required i64 fromTime, 4: required i64 toTime,
+ 5: required i32 limit, 6: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 requested user
+ * @param filters
+ * map of multiple filter criteria.
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.ExperimentSummary> searchExperiments(1: required string gatewayId,
+ 2: required string userName, 3: map<experimentModel.ExperimentSearchFields, string> filters,
+ 4: required i32 limit, 5: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get Experiment Statisitics for the given gateway for a specific time period
+ * @param gatewayId
+ * Identifier of the requested gateway
+ * @param fromTime
+ * Starting date time
+ * @param toTime
+ * Ending data time
+ **/
+ experimentModel.ExperimentStatistics getExperimentStatistics(1: required string gatewayId,
+ 2: required i64 fromTime, 3: required i64 toTime)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get all Experiments within a Project
+ *
+ * @param projectId
+ * Identifier of the project
+ * @deprecated
+ * Instead use getAllExperimentsInProjectWithPagination
+ */
+ list<experimentModel.Experiment> getAllExperimentsInProject(1: required string projectId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase,
+ 4: airavataErrors.ProjectNotFoundException pnfe)
+
+ /**
+ * Get all Experiments within project with pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param projectId
+ * Identifier of the project
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.Experiment> getAllExperimentsInProjectWithPagination(1: required string projectId,
+ 2: required i32 limit, 3: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase,
+ 4: airavataErrors.ProjectNotFoundException pnfe)
+
+
+ /**
+ * Get all Experiments by user
+ *
+ * @param gatewayId
+ * Identifier of the requesting gateway
+ * @param userName
+ * Username of the requested user
+ * @deprecated
+ * Instead use getAllUserExperimentsWithPagination
+ */
+ list<experimentModel.Experiment> getAllUserExperiments(1: required string gatewayId,
+ 2: required string userName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Get all Experiments by user pagination. Results will be sorted
+ * based on creation time DESC
+ *
+ * @param gatewayId
+ * Identifier of the requesting gateway
+ * @param userName
+ * Username of the requested user
+ * @param limit
+ * Amount of results to be fetched
+ * @param offset
+ * The starting point of the results to be fetched
+ */
+ list<experimentModel.Experiment> getAllUserExperimentsWithPagination(1: required string gatewayId,
+ 2: required string userName, 3: required i32 limit, 4: required i32 offset)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+ * but inferred from the authentication header. This experiment is just a persistent place holder. The client
+ * has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+ * registering the experiment in a persistent store.
+ *
+ * @param basicExperimentMetadata
+ * The create experiment will require the basic experiment metadata like the name and description, intended user,
+ * the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+ * the ExperimentMetadata is a required field.
+ *
+ * @return
+ * The server-side generated.airavata.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 experimentModel.Experiment experiment)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch previously created experiment metadata.
+ *
+ * @param airavataExperimentId
+ * The identifier for the requested experiment. This is returned during the create experiment step.
+ *
+ * @return experimentMetada
+ * This method will return the previously stored experiment metadata.
+ *
+ * @throws org.apache.airavata.model.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.model.error.AiravataClientException
+ * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ *
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ *
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ *
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ *
+ * @throws org.apache.airavata.model.error.AiravataSystemException
+ * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ *
+ */
+ experimentModel.Experiment getExperiment(1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Configure a previously created experiment with required inputs, scheduling and other quality of service
+ * parameters. This method only updates the experiment object within the registry. The experiment has to be launched
+ * to make it actionable by the server.
+ *
+ * @param airavataExperimentId
+ * The identifier for the requested experiment. This is returned during the create experiment step.
+ *
+ * @param experimentConfigurationData
+ * The configuration information of the experiment with application input parameters, computational resource scheduling
+ * information, special input output handling and additional quality of service parameters.
+ *
+ * @return
+ * This method call does not have a return value.
+ *
+ * @throws org.apache.airavata.model.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.model.error.AiravataClientException
+ * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ *
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ *
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ *
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ *
+ * @throws org.apache.airavata.model.error.AiravataSystemException
+ * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ *
+ */
+ void updateExperiment(1: required string airavataExperimentId,
+ 2: required experimentModel.Experiment experiment)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ void updateExperimentConfiguration(1: required string airavataExperimentId,
+ 2: required experimentModel.UserConfigurationData userConfiguration)
+
+ void updateResourceScheduleing(1: required string airavataExperimentId,
+ 2: required experimentModel.ComputationalResourceScheduling resourceScheduling)
+
+ /**
+ *
+ * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
+ *
+ * @param experimentID
+ * @return sucess/failure
+ *
+ **/
+ bool validateExperiment(1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
+ * notifications and intermediate and output data will be subsequently available for this experiment.
+ *
+ * @param airavataExperimentId
+ * The identifier for the requested experiment. This is returned during the create experiment step.
+ *
+ * @param airavataCredStoreToken:
+ * A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+ * credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+ * generated token associated with the registered credentials. The client has to security posses this token id and is
+ * required to pass it to Airavata Server for all execution requests.
+ * Note: At this point only the credential store token is required so the string is directly passed here. In future if
+ * if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+ * Note: This parameter is not persisted within Airavata Registry for security reasons.
+ *
+ * @return
+ * This method call does not have a return value.
+ *
+ * @throws org.apache.airavata.model.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.model.error.AiravataClientException
+ * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ *
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ *
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ *
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ *
+ * @throws org.apache.airavata.model.error.AiravataSystemException
+ * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ *
+ */
+ void launchExperiment(1: required string airavataExperimentId
+ 2: required string airavataCredStoreToken)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase,
+ 5: airavataErrors.LaunchValidationException lve)
+
+
+ experimentModel.ExperimentStatus getExperimentStatus(1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ list<applicationInterfaceModel.OutputDataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ list<applicationInterfaceModel.OutputDataObjectType> getIntermediateOutputs (1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+
+ map<string, experimentModel.JobStatus> getJobStatuses(1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ list<experimentModel.JobDetails> getJobDetails(1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ list<experimentModel.DataTransferDetails> getDataTransferDetails(1: required string airavataExperimentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+ * The client has to subsequently update this configuration if needed and launch the cloned experiment.
+ *
+ * @param newExperimentName
+ * experiment name that should be used in the cloned experiment
+ *
+ * @param updatedExperiment
+ * Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+ * the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+ * should be shared public by default.
+ *
+ * @return
+ * The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+ *
+ * @throws org.apache.airavata.model.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.model.error.AiravataClientException
+ * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ *
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ *
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ *
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ *
+ * @throws org.apache.airavata.model.error.AiravataSystemException
+ * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ *
+ */
+ string cloneExperiment(1: string existingExperimentID,
+ 2: string newExperimentName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Terminate a running experiment.
+ *
+ * @param airavataExperimentId
+ * The identifier for the requested experiment. This is returned during the create experiment step.
+ *
+ * @return
+ * This method call does not have a return value.
+ *
+ * @throws org.apache.airavata.model.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.model.error.AiravataClientException
+ * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ *
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ *
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ *
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ *
+ * @throws org.apache.airavata.model.error.AiravataSystemException
+ * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ *
+ */
+ void terminateExperiment(1: string airavataExperimentId, 2: string tokenId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+/*
+ * API definitions for App Catalog related operations
+ *
+*/
+
+/*
+ * Application Module is a specific computational application. Many applications, particularly scientific applications
+ * are really a suite of applications or encompass 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.
+ *
+ * @param applicationModule
+ * Application Module Object created from the datamodel.
+ *
+ * @return appModuleId
+ * Returns a server-side generated airavata appModule globally unique identifier.
+ *
+ */
+ string registerApplicationModule(1: required string gatewayId,
+ 2: required applicationDeploymentModel.ApplicationModule applicationModule)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch a Application Module.
+ *
+ * @param appModuleId
+ * The identifier for the requested application module
+ *
+ * @return applicationModule
+ * Returns a application Module Object.
+ *
+ */
+ applicationDeploymentModel.ApplicationModule getApplicationModule(1: required string appModuleId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 applicationDeploymentModel.ApplicationModule applicationModule)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ list<applicationDeploymentModel.ApplicationModule> getAllAppModules (1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Delete a Application Module.
+ *
+ * @param appModuleId
+ * The identifier for the requested application module to be deleted.
+ *
+ * @return status
+ * Returns a success/failure of the deletion.
+ *
+ */
+ bool deleteApplicationModule(1: required string appModuleId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+/*
+ * Application Deployment registers a deployment of a application module on a compute resource
+ *
+*/
+
+ /**
+ * Register a Application Deployment.
+ *
+ * @param applicationModule
+ * Application Module Object created from the datamodel.
+ *
+ * @return appDeploymentId
+ * Returns a server-side generated airavata appDeployment globally unique identifier.
+ *
+ */
+ string registerApplicationDeployment(1: required string gatewayId,
+ 2: required applicationDeploymentModel.ApplicationDeploymentDescription applicationDeployment)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch a Application Deployment.
+ *
+ * @param appDeploymentId
+ * The identifier for the requested application module
+ *
+ * @return applicationDeployment
+ * Returns a application Deployment Object.
+ *
+ */
+ applicationDeploymentModel.ApplicationDeploymentDescription getApplicationDeployment(1: required string appDeploymentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Update a Application Deployment.
+ *
+ * @param appDeploymentId
+ * The identifier for the requested application deployment to be updated.
+ *
+ * @param appDeployment
+ * Application Deployment Object created from the datamodel.
+ *
+ * @return status
+ * Returns a success/failure of the update.
+ *
+ */
+ bool updateApplicationDeployment(1: required string appDeploymentId,
+ 2: required applicationDeploymentModel.ApplicationDeploymentDescription applicationDeployment)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Delete a Application deployment.
+ *
+ * @param appDeploymentId
+ * The identifier for the requested application deployment to be deleted.
+ *
+ * @return status
+ * Returns a success/failure of the deletion.
+ *
+ */
+ bool deleteApplicationDeployment(1: required string appDeploymentId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch all Application Deployment Descriptions.
+ *
+ * @return list<applicationDeployment.
+ * Returns the list of all application Deployment Objects.
+ *
+ */
+ list<applicationDeploymentModel.ApplicationDeploymentDescription> getAllApplicationDeployments(1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+/*
+ * Application Interface
+ *
+*/
+
+ /**
+ * Register a Application Interface.
+ *
+ * @param applicationModule
+ * Application Module Object created from the datamodel.
+ *
+ * @return appInterfaceId
+ * Returns a server-side generated airavata application interface globally unique identifier.
+ *
+ */
+ string registerApplicationInterface(1: required string gatewayId,
+ 2: required applicationInterfaceModel.ApplicationInterfaceDescription applicationInterface)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch a Application Interface.
+ *
+ * @param appInterfaceId
+ * The identifier for the requested application module
+ *
+ * @return applicationInterface
+ * Returns a application Interface Object.
+ *
+ *
+ */
+ applicationInterfaceModel.ApplicationInterfaceDescription getApplicationInterface(1: required string appInterfaceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Update a Application Interface.
+ *
+ * @param appInterfaceId
+ * The identifier for the requested application deployment to be updated.
+ *
+ * @param appInterface
+ * Application Interface Object created from the datamodel.
+ *
+ * @return status
+ * Returns a success/failure of the update.
+ *
+ *
+ */
+ bool updateApplicationInterface(1: required string appInterfaceId,
+ 2: required applicationInterfaceModel.ApplicationInterfaceDescription applicationInterface)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Delete a Application Interface.
+ *
+ * @param appInterfaceId
+ * The identifier for the requested application interface to be deleted.
+ *
+ * @return status
+ * Returns a success/failure of the deletion.
+ *
+ *
+ */
+ bool deleteApplicationInterface(1: required string appInterfaceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch all Application Interface documents.
+ *
+ *
+ * @return map<applicationId, applicationInterfaceNames>
+ * Returns a list of application interfaces documents
+ *
+ */
+ list<applicationInterfaceModel.ApplicationInterfaceDescription> getAllApplicationInterfaces (1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch the list of Application Inputs.
+ *
+ * @param appInterfaceId
+ * The identifier for the requested application interface
+ *
+ * @return list<applicationInterfaceModel.InputDataObjectType>
+ * Returns a list of application inputs.
+ *
+ */
+ list<applicationInterfaceModel.InputDataObjectType> getApplicationInputs(1: required string appInterfaceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch the list of Application Outputs.
+ *
+ * @param appInterfaceId
+ * The identifier for the requested application interface
+ *
+ * @return list<applicationInterfaceModel.OutputDataObjectType>
+ * Returns a list of application outputs.
+ *
+ */
+ list<applicationInterfaceModel.OutputDataObjectType> getApplicationOutputs(1: required string appInterfaceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+/*
+ * 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 computeResourceModel.ComputeResourceDescription
+ computeResourceDescription)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch the given Compute Resource.
+ *
+ * @param computeResourceId
+ * The identifier for the requested compute resource
+ *
+ * @return computeResourceDescription
+ * Compute Resource Object created from the datamodel..
+ *
+ */
+ computeResourceModel.ComputeResourceDescription getComputeResource(1: required string computeResourceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 computeResourceModel.ComputeResourceDescription computeResourceDescription)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 computeResourceModel.LOCALSubmission localSubmission)
+
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 computeResourceModel.LOCALSubmission localSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * This method returns localJobSubmission object
+ * @param jobSubmissionInterfaceId
+ * The identifier of the JobSubmission Interface to be retrieved.
+ * @return LOCALSubmission instance
+ **/
+ computeResourceModel.LOCALSubmission getLocalJobSubmission(1: required string jobSubmissionId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+
+ /**
+ * 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 computeResourceModel.SSHJobSubmission sshJobSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * This method returns SSHJobSubmission object
+ * @param jobSubmissionInterfaceId
+ * The identifier of the JobSubmission Interface to be retrieved.
+ * @return SSHJobSubmission instance
+ **/
+ computeResourceModel.SSHJobSubmission getSSHJobSubmission(1: required string jobSubmissionId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+
+ /**
+ * 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 computeResourceModel.UnicoreJobSubmission unicoreJobSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * This method returns UnicoreJobSubmission object
+ * @param jobSubmissionInterfaceId
+ * The identifier of the JobSubmission Interface to be retrieved.
+ * @return UnicoreJobSubmission instance
+ **/
+ computeResourceModel.UnicoreJobSubmission getUnicoreJobSubmission(1: required string jobSubmissionId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * 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 computeResourceModel.CloudJobSubmission cloudSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * This method returns cloudJobSubmission object
+ * @param jobSubmissionInterfaceI
+ * The identifier of the JobSubmission Interface to be retrieved.
+ * @return CloudJobSubmission instance
+ **/
+ computeResourceModel.CloudJobSubmission getCloudJobSubmission(1: required string jobSubmissionId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Update the given SSH Job Submission details
+ *
+ * @param jobSubmissionInterfaceId
+ * The identifier of the JobSubmission Interface to be updated.
+ *
+ * @param sshJobSubmission
+ * The SSHJobSubmission object to be updated.
+ *
+ * @return status
+ * Returns a success/failure of the deletion.
+ *
+ */
+ bool updateSSHJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+ 2: required computeResourceModel.SSHJobSubmission sshJobSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+/**
+ * Update the given SSH Job Submission details
+ *
+ * @param jobSubmissionInterfaceId
+ * The identifier of the JobSubmission Interface to be updated.
+ *
+ * @param cloudJobSubmission
+ * The CloudJobSubmission object to be updated.
+ *
+ * @return status
+ * Returns a success/failure of the deletion.
+ *
+ */
+ bool updateCloudJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+ 2: required computeResourceModel.CloudJobSubmission sshJobSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool updateUnicoreJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+ 2: required computeResourceModel.UnicoreJobSubmission unicoreJobSubmission)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+ /**
+ * Add a Local data movement details to a compute resource
+ * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+ *
+ * @param computeResourceId
+ * The identifier of the compute resource to which JobSubmission protocol to be added
+ *
+ * @param priorityOrder
+ * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+ *
+ * @param localDataMovement
+ * The LOCALDataMovement object to be added to the resource.
+ *
+ * @return status
+ * Returns the unique job submission id.
+ *
+ */
+ string addLocalDataMovementDetails(1: required string computeResourceId,
+ 2: required i32 priorityOrder,
+ 3: required computeResourceModel.LOCALDataMovement localDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 computeResourceModel.LOCALDataMovement localDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * This method returns local datamovement object
+ * @param dataMovementId
+ * The identifier of the datamovement Interface to be retrieved.
+ * @return LOCALDataMovement instance
+ **/
+ computeResourceModel.LOCALDataMovement getLocalDataMovement(1: required string dataMovementId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * Add a SCP data movement details to a compute resource
+ * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+ *
+ * @param computeResourceId
+ * The identifier of the compute resource to which JobSubmission protocol to be added
+ *
+ * @param priorityOrder
+ * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+ *
+ * @param scpDataMovement
+ * The SCPDataMovement object to be added to the resource.
+ *
+ * @return status
+ * Returns the unique job submission id.
+ *
+ */
+ string addSCPDataMovementDetails(1: required string computeResourceId,
+ 2: required i32 priorityOrder,
+ 3: required computeResourceModel.SCPDataMovement scpDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 computeResourceModel.SCPDataMovement scpDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * This method returns SCP datamovement object
+ * @param dataMovementId
+ * The identifier of the datamovement Interface to be retrieved.
+ * @return SCPDataMovement instance
+ **/
+ computeResourceModel.SCPDataMovement getSCPDataMovement(1: required string dataMovementId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ string addUnicoreDataMovementDetails(1: required string computeResourceId,
+ 2: required i32 priorityOrder,
+ 3: required computeResourceModel.UnicoreDataMovement unicoreDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool updateUnicoreDataMovementDetails(1: required string dataMovementInterfaceId,
+ 2: required computeResourceModel.UnicoreDataMovement unicoreDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ computeResourceModel.UnicoreDataMovement getUnicoreDataMovement(1: required string dataMovementId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Add a GridFTP data movement details to a compute resource
+ * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+ *
+ * @param computeResourceId
+ * The identifier of the compute resource to which JobSubmission protocol to be added
+ *
+ * @param priorityOrder
+ * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+ *
+ * @param gridFTPDataMovement
+ * The GridFTPDataMovement object to be added to the resource.
+ *
+ * @return status
+ * Returns the unique job submission id.
+ *
+ */
+ string addGridFTPDataMovementDetails(1: required string computeResourceId,
+ 2: required i32 priorityOrder,
+ 3: required computeResourceModel.GridFTPDataMovement gridFTPDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Update the given GridFTP data movement details to a compute resource
+ * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+ *
+ * @param dataMovementInterfaceId
+ * The identifier of the data movement Interface to be updated.
+ *
+ * @param gridFTPDataMovement
+ * The GridFTPDataMovement object to be updated.
+ *
+ * @return status
+ * Returns a success/failure of the updation.
+ *
+ */
+ bool updateGridFTPDataMovementDetails(1: required string dataMovementInterfaceId,
+ 2: required computeResourceModel.GridFTPDataMovement gridFTPDataMovement)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * This method returns GridFTP datamovement object
+ * @param dataMovementId
+ * The identifier of the datamovement Interface to be retrieved.
+ * @return GridFTPDataMovement instance
+ **/
+ computeResourceModel.GridFTPDataMovement getGridFTPDataMovement(1: required string dataMovementId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 computeResourceId, 2: required string dataMovementInterfaceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ string registerResourceJobManager(1: required computeResourceModel.ResourceJobManager resourceJobManager)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool updateResourceJobManager(1: required string resourceJobManagerId, 2: required computeResourceModel.ResourceJobManager updatedResourceJobManager)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ computeResourceModel.ResourceJobManager getResourceJobManager(1: required string resourceJobManagerId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool deleteResourceJobManager(1: required string resourceJobManagerId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool deleteBatchQueue(1: required string computeResourceId, 2: required string queueName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+/*
+ * 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 gatewayResourceProfileModel.GatewayResourceProfile gatewayResourceProfile)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch the given Gateway Resource Profile.
+ *
+ * @param gatewayID
+ * The identifier for the requested gateway resource
+ *
+ * @return gatewayResourceProfile
+ * Gateway Resource Profile Object.
+ *
+ */
+ gatewayResourceProfileModel.GatewayResourceProfile getGatewayResourceProfile(1: required string gatewayID)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 gatewayResourceProfileModel.GatewayResourceProfile gatewayResourceProfile)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 gatewayResourceProfileModel.ComputeResourcePreference computeResourcePreference)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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.
+ *
+ */
+ gatewayResourceProfileModel.ComputeResourcePreference getGatewayComputeResourcePreference(1: required string gatewayID,
+ 2: required string computeResourceId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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<gatewayResourceProfileModel.ComputeResourcePreference>
+ getAllGatewayComputeResourcePreferences(1: required string gatewayID)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+
+ /**
+ * Fetch all gateway profiles registered
+ **/
+ list<gatewayResourceProfileModel.GatewayResourceProfile>
+ getAllGatewayComputeResources()
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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 gatewayResourceProfileModel.ComputeResourcePreference computeResourcePreference)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * 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: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ list<string> getAllWorkflows(1: required string gatewayId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ workflowDataModel.Workflow getWorkflow (1: required string workflowTemplateId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.Airavata
<TRUNCATED>
[4/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/orchestrator/generate-orchestrator-stubs.sh
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/orchestrator/generate-orchestrator-stubs.sh b/component-interface-descriptions/orchestrator/generate-orchestrator-stubs.sh
deleted file mode 100755
index b4a4779..0000000
--- a/component-interface-descriptions/orchestrator/generate-orchestrator-stubs.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#! /usr/bin/env bash
-
-# 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.
-
-# This script will regenerate the thrift code for Airavata Orchestrator Server Skeltons and Client Stubs.
-
-
-# Global Constants used across the script
-REQUIRED_THRIFT_VERSION='0.9.2'
-BASE_TARGET_DIR='target'
-ORCHESTRATOR_SERVICE_DIR='../../modules/orchestrator/orchestrator-client/src/main/java'
-
-# The Funcation fail prints error messages on failure and quits the script.
-fail() {
- echo $@
- exit 1
-}
-
-# The funcation add_license_header adds the ASF V2 license header to all java files within the specified generated
-# directory. The funcation also adds suppress all warnings annotation to all public classes and enum's
-# To Call:
-# add_license_header $generated_code_directory
-add_license_header() {
-
- # Fetch the generated code directory passed as the argument
- GENERATED_CODE_DIR=$1
-
- # For all generated thrift code, add the suppress all warnings annotation
- # NOTE: In order to save the orginal file as a backup, use sed -i.orig in place of sed -i ''
- find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public class /@SuppressWarnings("all") public class /'
- find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public enum /@SuppressWarnings("all") public enum /'
-
- # For each java file within the genrated directory, add the ASF V2 LICENSE header
- for f in $(find ${GENERATED_CODE_DIR} -name '*.java'); do
- cat - ${f} >${f}-with-license <<EOF
- /*
- * 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.
- */
-EOF
- mv ${f}-with-license ${f}
- done
-}
-
-# The funcation compares every generated java file with the one in specified existing source location. If the comparision
-# shows a difference, then it replaces with the newly generated file (with added license header).
-# To Call:
-# copy_changed_files $generated_code_directory $existing_source_directory
-copy_changed_files() {
-
- # Read all the funcation arguments
- GENERATED_CODE_DIR=$1
- WORKSPACE_SRC_DIR=$2
-
- echo "Generated sources are in ${GENERATED_CODE_DIR}"
- echo "Destination workspace is in ${WORKSPACE_SRC_DIR}"
-
- # Check if the newly generated files exist in the targetted workspace, if not copy. Only changed files will be synced.
- # the extra slash to GENERATED_CODE_DIR is needed to ensure the parent directory itself is not copied.
- rsync -auv ${GENERATED_CODE_DIR}/ ${WORKSPACE_SRC_DIR}
-}
-
-# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
-# Verify is thrift is installed, is in the path is at a specified version.
-VERSION=$(thrift -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" | wc -l)
-if [ "$VERSION" -ne 1 ] ; then
- echo "****************************************************"
- echo "*** thrift is not installed or is not in the path"
- echo "*** expecting 'thrift -version' to return ${REQUIRED_THRIFT_VERSION}"
- echo "*** generated code will not be updated"
- fail "****************************************************"
-fi
-
-# Initialize the thrift arguements.
-# Since most of the Airavata API and Data Models have includes, use recursive option by defualt.
-# Generate all the files in target directory
-THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
-# Ensure the required target directories exists, if not create.
-mkdir -p ${BASE_TARGET_DIR}
-
-#######################################################################
-# Generate/Update the orchestrator CPI service stubs
-# To start with both the servicer and client are in same package, but
-# needs to be split using a common generated api-boilerplate-code
-#######################################################################
-
-#Java generation directory
-JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
-
-# As a precausion remove and previously generated files if exists
-rm -rf ${JAVA_GEN_DIR}
-
-# Using thrify Java generator, generate the java classes based on Airavata API. This
-# The airavataAPI.thrift includes rest of data models.
-thrift ${THRIFT_ARGS} --gen java orchestrator.cpi.service.thrift || fail unable to generate java thrift classes
-
-# For the generated java classes add the ASF V2 License header
-add_license_header $JAVA_GEN_DIR
-
-# Compare the newly generated classes with existing java generated skelton/stub sources and replace the changed ones.
-copy_changed_files ${JAVA_GEN_DIR} ${ORCHESTRATOR_SERVICE_DIR}
-
-# CleanUp: Delete the base target build directory
-#rm -rf ${BASE_TARGET_DIR}
-
-echo "Successfully generated new sources, compared against exiting code and replaced the changed files"
-exit 0
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/component-interface-descriptions/orchestrator/orchestrator.cpi.service.thrift
----------------------------------------------------------------------
diff --git a/component-interface-descriptions/orchestrator/orchestrator.cpi.service.thrift b/component-interface-descriptions/orchestrator/orchestrator.cpi.service.thrift
deleted file mode 100644
index fa8818f..0000000
--- a/component-interface-descriptions/orchestrator/orchestrator.cpi.service.thrift
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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 Orchestration Service.
- *
-*/
-
-include "../airavata-api/airavataErrors.thrift"
-namespace java org.apache.airavata.orchestrator.cpi
-
-const string ORCHESTRATOR_CPI_VERSION = "0.13.0"
-
-service OrchestratorService {
-
- /** Query orchestrator server to fetch the CPI version */
- string getOrchestratorCPIVersion(),
-
- /**
- * After creating the experiment Data user have the
- * experimentID as the handler to the experiment, during the launchExperiment
- * We just have to give the experimentID
- *
- * @param experimentID
- * @return sucess/failure
- *
- **/
- bool launchExperiment (1: required string experimentId, 2: required string airavataCredStoreToken),
-
- /**
- * In order to run single applications users should create an associating
- * WorkflowNodeDetails and a TaskDetails for it and hand it over for execution
- * along with a credential store token for authentication
- *
- * @param taskId
- * @param airavataCredStoreToken
- * @return sucess/failure
- *
- **/
- bool launchTask (1: required string taskId, 2: required string airavataCredStoreToken),
-
- /**
- *
- * Validate funcations which can verify if the experiment is ready to be launced.
- *
- * @param experimentID
- * @return sucess/failure
- *
- **/
- bool validateExperiment(1: required string experimentId)
- throws (1: airavataErrors.LaunchValidationException lve)
- /**
- *
- * Terminate the running experiment.
- *
- * @param experimentID
- * @return sucess/failure
- *
- **/
- bool terminateExperiment (1: required string experimentId, 2: required string tokenId)
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/modules/credential-store/cs-thrift-descriptions/generate-cs-stubs.sh
----------------------------------------------------------------------
diff --git a/modules/credential-store/cs-thrift-descriptions/generate-cs-stubs.sh b/modules/credential-store/cs-thrift-descriptions/generate-cs-stubs.sh
index a1ca01f..308cc1b 100755
--- a/modules/credential-store/cs-thrift-descriptions/generate-cs-stubs.sh
+++ b/modules/credential-store/cs-thrift-descriptions/generate-cs-stubs.sh
@@ -116,7 +116,7 @@ JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
rm -rf ${JAVA_GEN_DIR}
# Using thrift Java generator, generate the java classes based on Airavata API. This
-# The airavataAPI.thrift includes rest of data models.
+# The airavata-api.thrift includes rest of data models.
thrift ${THRIFT_ARGS} --gen java credentialStoreCPI.thrift || fail unable to generate java thrift classes
thrift ${THRIFT_ARGS} --gen java credentialStoreDataModel.thrift || fail unable to generate java thrift classes
[2/7] airavata git commit: Renaming thrift files to follow the style
guide naming convention
Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift b/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift
new file mode 100644
index 0000000..2941e00
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ *
+ */
+
+include "workspace-model.thrift"
+include "airavata-errors.thrift"
+include "messaging-events.thrift"
+include "security-model.thrift"
+
+namespace java org.apache.airavata.model
+namespace php Airavata.Model
+namespace cpp apache.airavata.model
+namespace py apache.airavata.model
+
+/*
+ * This file describes the definitions of the Airavata Execution Data Structures. Each of the
+ * language specific Airavata Client SDK's will translate this neutral data model into an
+ * appropriate form for passing to the Airavata Server Execution API Calls.
+*/
+
+
+
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/airavata-errors.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/airavata-errors.thrift b/thrift-interface-descriptions/airavata-api/airavata-errors.thrift
new file mode 100644
index 0000000..15129c5
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/airavata-errors.thrift
@@ -0,0 +1,172 @@
+/*
+ * 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.
+ *
+ */
+
+/*
+* This file describes the definitions of the Error Messages that can occur
+* when invoking Apache Airavata Services through the API. In addition Thrift provides
+* built in funcationality to raise TApplicationException for all internal server errors.
+*/
+
+include "experiment-model.thrift"
+
+namespace java org.apache.airavata.model.error
+namespace php Airavata.API.Error
+namespace cpp apache.airavata.api.error
+namespace perl AiravataAPIError
+namespace py apache.airavata.api.error
+namespace js AiravataAPIError
+
+/**
+ * A list of Airavata API Error Message Types
+ *
+ * UNKNOWN: No information available about the error
+ *
+ * PERMISSION_DENIED: Not permitted to perform action
+ *
+ * INTERNAL_ERROR: Unexpected problem with the service
+ *
+ * AUTHENTICATION_FAILURE: The client failed to authenticate.
+ *
+ * INVALID_AUTHORIZATION: Security Token and/or Username and/or password is incorrect
+ *
+ * AUTHORIZATION_EXPIRED: Authentication token expired
+ *
+ * UNKNOWN_GATEWAY_ID: The gateway is not registered with Airavata.
+ *
+ * UNSUPPORTED_OPERATION: Operation denied because it is currently unsupported.
+ */
+
+enum AiravataErrorType {
+ UNKNOWN,
+ PERMISSION_DENIED,
+ INTERNAL_ERROR,
+ AUTHENTICATION_FAILURE,
+ INVALID_AUTHORIZATION,
+ AUTHORIZATION_EXPIRED,
+ UNKNOWN_GATEWAY_ID,
+ UNSUPPORTED_OPERATION
+}
+
+/**
+ * This exception is thrown when a client asks to perform an operation on an experiment that does not exist.
+ *
+ * identifier: A description of the experiment that was not found on the server.
+ *
+ * key: The value passed from the client in the identifier, which was not found.
+ */
+exception ExperimentNotFoundException {
+ 1: required string message
+ /**
+ * 1: optional string identifier,
+ * 2: optional string key
+ **/
+}
+
+exception ProjectNotFoundException {
+ 1: required string message
+}
+
+/**
+* This exception is thrown for invalid requests that occur from any reasons like required input parameters are missing,
+* or a parameter is malformed.
+*
+* message: contains the associated error message.
+*/
+exception InvalidRequestException {
+ 1: required string message
+}
+
+
+/**
+* This exception is thrown when RPC timeout gets exceeded.
+*/
+exception TimedOutException {
+}
+
+/**
+* This exception is thrown for invalid authentication requests.
+*
+* message: contains the cause of the authorization failure.
+*/
+exception AuthenticationException {
+ 1: required string message
+}
+
+/**
+* This exception is thrown for invalid authorization requests such user does not have acces to an aplication or resource.
+*
+* message: contains the authorization failure message
+*/
+exception AuthorizationException {
+ 1: required string message
+}
+
+
+/**
+ * This exception is thrown by Airavata Services when a call fails as a result of
+ * a problem that a client may be able to resolve. For example, if the user
+ * attempts to execute an application on a resource gateway does not have access to.
+ *
+ * This exception would not be used for internal system errors that do not
+ * reflect user actions, but rather reflect a problem within the service that
+ * the client cannot resolve.
+ *
+ * airavataErrorType: The message type indicating the error that occurred.
+ * must be one of the values of AiravataErrorType.
+ *
+ * parameter: If the error applied to a particular input parameter, this will
+ * indicate which parameter.
+ */
+exception AiravataClientException {
+ 1: required AiravataErrorType airavataErrorType,
+ 2: optional string parameter
+}
+
+struct ValidatorResult {
+ 1: required bool result,
+ 2: optional string errorDetails
+}
+
+struct ValidationResults {
+ 1: required bool validationState,
+ 2: required list<ValidatorResult> validationResultList
+}
+
+exception LaunchValidationException {
+ 1: required ValidationResults validationResult;
+ 2: optional string errorMessage;
+}
+
+/**
+ * This exception is thrown by Airavata Services when a call fails as a result of
+ * a problem in the service that could not be changed through client's action.
+ *
+ * airavataErrorType: The message type indicating the error that occurred.
+ * must be one of the values of AiravataErrorType.
+ *
+ * message: This may contain additional information about the error
+ *
+ */
+exception AiravataSystemException {
+ 1: required AiravataErrorType airavataErrorType,
+ 2: optional string message,
+}
+
+
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift b/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift
new file mode 100644
index 0000000..389f292
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ *
+ */
+
+include "compute-resource-model.thrift"
+include "application-deployment-model.thrift"
+include "application-interface-model.thrift"
+include "gateway-resource-profile-model.thrift"
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift b/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift
new file mode 100644
index 0000000..a965e23
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift
@@ -0,0 +1,132 @@
+/*
+ * 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.
+ *
+ */
+
+/**
+ * This file describes the definitions of the Data Structures related to deployment of Application on
+ * computational resources.
+ *
+*/
+
+namespace java org.apache.airavata.model.appcatalog.appdeployment
+namespace php Airavata.Model.AppCatalog.AppDeployment
+namespace cpp apache.airavata.model.appcatalog.appdeployment
+namespace py apache.airavata.model.appcatalog.appdeployment
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+/**
+ * Key Value pairs to be used to set environments
+ *
+ * name:
+ * Name of the environment variable such as PATH, LD_LIBRARY_PATH, NETCDF_HOME.
+ *
+ * value:
+ * Value of the environment variable to set
+*/
+struct SetEnvPaths {
+ 1: required string name,
+ 2: required string value
+}
+
+/**
+ * Application Module Information. A module has to be registered before registering a deployment.
+ *
+ * appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
+ *
+ * appModuleName:
+ * Name of the application module.
+ *
+ * appModuleVersion:
+ * Version of the application.
+ *
+ * appModuleDescription:
+ * Descriprion of the Module
+ *
+*/
+struct ApplicationModule {
+ 1: required string appModuleId = DEFAULT_ID,
+ 2: required string appModuleName,
+ 3: optional string appModuleVersion,
+ 4: optional string appModuleDescription
+}
+
+/**
+ * Enumeration of application parallelism supported by Airavata
+ *
+ * SERIAL:
+ * Single processor applications without any parallelization.
+ *
+ * MPI:
+ * Messaging Passing Interface.
+ *
+ * OPENMP:
+ * Shared Memory Implementtaion.
+ *
+ * OPENMP_MPI:
+ * Hybrid Applications.
+ *
+*/
+enum ApplicationParallelismType {
+ SERIAL,
+ MPI,
+ OPENMP,
+ OPENMP_MPI
+}
+/**
+ * Application Deployment Description
+ *
+ * appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
+ *
+ * appModuleName:
+ * Application Module Name. This has to be precise describing the binary.
+ *
+ * computeHostId:
+ * This ID maps application deployment to a particular resource previously described within Airavata.
+ * Example: Stampede is first registered and refered when registering WRF.
+ *
+ * moduleLoadCmd:
+ * Command string to load modules. This will be placed in the job submisison
+ * Ex: module load amber
+ *
+ * libPrependPaths:
+ * prepend to a path variable the value
+ *
+ * libAppendPaths:
+ * append to a path variable the value
+ *
+ * setEnvironment:
+ * assigns to the environment variable "NAME" the value
+ *
+*/
+struct ApplicationDeploymentDescription {
+// 1: required bool isEmpty = 0,
+ 1: required string appDeploymentId = DEFAULT_ID,
+ 2: required string appModuleId,
+ 3: required string computeHostId,
+ 4: required string executablePath,
+ 5: required ApplicationParallelismType parallelism = ApplicationParallelismType.SERIAL,
+ 6: optional string appDeploymentDescription,
+ 7: optional list<string> moduleLoadCmds,
+ 8: optional list<SetEnvPaths> libPrependPaths,
+ 9: optional list<SetEnvPaths> libAppendPaths,
+ 10: optional list<SetEnvPaths> setEnvironment,
+ 11: optional list<string> preJobCommands,
+ 12: optional list<string> postJobCommands,
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/application-interface-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/application-interface-model.thrift b/thrift-interface-descriptions/airavata-api/application-interface-model.thrift
new file mode 100644
index 0000000..4c57009
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/application-interface-model.thrift
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ *
+ */
+
+/**
+ * This file describes the definitions of the Data Structures of Application interfaces. These interfaces are mapped
+ * to application mapping on various resources.
+ *
+*/
+
+namespace java org.apache.airavata.model.appcatalog.appinterface
+namespace php Airavata.Model.AppCatalog.AppInterface
+namespace cpp apache.airavata.model.appcatalog.appinterface
+namespace py apache.airavata.model.appcatalog.appinterface
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+/**
+ * Data Types supported in Airavata. The primitive data types
+ *
+*/
+enum DataType{
+ STRING,
+ INTEGER,
+ FLOAT,
+ URI,
+ STDOUT,
+ STDERR
+}
+
+/**
+ * Application Inputs. The paramters describe how inputs are passed to the application.
+ *
+ * name:
+ * Name of the parameter.
+ *
+ * value:
+ * Value of the parameter. A default value could be set during registration.
+ *
+ * type:
+ * Data type of the parameter
+ *
+ * applicationArguement:
+ * The argument flag sent to the application. Such as -p pressure.
+ *
+ * standardInput:
+ * When this value is set, the parameter is sent as standard input rather than a parameter.
+ * Typically this is passed using redirection operator ">".
+ *
+ * userFriendlyDescription:
+ * Description to be displayed at the user interface.
+ *
+ * metaData:
+ * Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+ *
+*/
+struct InputDataObjectType {
+ 1: required string name,
+ 2: optional string value,
+ 3: optional DataType type,
+ 4: optional string applicationArgument,
+ 5: optional bool standardInput = 0,
+ 6: optional string userFriendlyDescription,
+ 7: optional string metaData,
+ 8: optional i32 inputOrder,
+ 9: optional bool isRequired,
+ 10: optional bool requiredToAddedToCommandLine,
+ 11: optional bool dataStaged = 0
+}
+
+/**
+ * Application Outputs. The paramters describe how outputs generated by the application.
+ *
+ * name:
+ * Name of the parameter.
+ *
+ * value:
+ * Value of the parameter.
+ *
+ * type:
+ * Data type of the parameter
+ *
+ * applicationArguement:
+ * The argument flag sent to the application. Such as -p pressure.
+ *
+ * standardInput:
+ * When this value is set, the parameter is sent as standard input rather than a parameter.
+ * Typically this is passed using redirection operator ">".
+ *
+ * userFriendlyDescription:
+ * Description to be displayed at the user interface.
+ *
+ * metaData:
+ * Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+ *
+*/
+struct OutputDataObjectType {
+ 1: required string name,
+ 2: optional string value,
+ 3: optional DataType type,
+ 4: optional string applicationArgument,
+ 5: optional bool isRequired,
+ 6: optional bool requiredToAddedToCommandLine,
+ 7: optional bool dataMovement,
+ 8: optional string location,
+ 9: optional string searchQuery
+}
+
+/**
+ * Application Interface Description
+ *
+ * applicationModules:
+ * Associate all application modules with versions which interface is applicable to.
+ *
+ * applicationInputs:
+ * Inputs to be passed to the application
+ *
+ * applicationOutputs:
+ * Outputs generated from the application
+ *
+*/
+struct ApplicationInterfaceDescription {
+// 1: required bool isEmpty = 0,
+ 1: required string applicationInterfaceId = DEFAULT_ID,
+ 2: required string applicationName,
+ 3: optional string applicationDescription,
+ 4: optional list<string> applicationModules,
+ 5: optional list<InputDataObjectType> applicationInputs,
+ 6: optional list<OutputDataObjectType> applicationOutputs
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift b/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift
new file mode 100644
index 0000000..6e8361c
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift
@@ -0,0 +1,445 @@
+/*
+ * 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.
+ *
+ */
+
+namespace java org.apache.airavata.model.appcatalog.computeresource
+namespace php Airavata.Model.AppCatalog.ComputeResource
+namespace cpp apache.airavata.model.appcatalog.computeresource
+namespace py apache.airavata.model.appcatalog.computeresource
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+/**
+ * Enumeration of local resource job manager types supported by Airavata
+ *
+ * FORK:
+ * Forking of commands without any job manager
+ *
+ * PBS:
+ * Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ *
+ * SLURM:
+ * The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+ * UGE:
+ * Univa Grid Engine, a variation of PBS implementation.
+ *
+ * LSF:
+ * IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
+ *
+*/
+enum ResourceJobManagerType {
+ FORK,
+ PBS,
+ SLURM,
+ LSF,
+ UGE
+}
+
+/**
+ * Enumeration of resource job manager commands
+ *
+ * SUBMISSION:
+ * Ex: qsub, sbatch
+ *
+ * JOBMONITORING:
+ * Ex: qstat, squeue
+ *
+ * DELETION:
+ * Ex: qdel, scancel
+ *
+ * CHECK_JOB:
+ * Detailed Status about the Job. Ex: checkjob
+ *
+ * SHOW_QUEUE:
+ * List of Queued Job by the schedular. Ex: showq
+ *
+ * SHOW_RESERVATION:
+ * List all reservations. Ex:showres, show_res
+ *
+ * SHOW_START:
+ * Display the start time of the specified job. Ex: showstart
+ *
+*/
+enum JobManagerCommand {
+ SUBMISSION,
+ JOB_MONITORING,
+ DELETION,
+ CHECK_JOB,
+ SHOW_QUEUE,
+ SHOW_RESERVATION,
+ SHOW_START
+}
+
+
+/**
+ * Resource Job Manager Information
+ *
+ * resourceJobManagerType:
+ * A typical HPC cluster has a single Job Manager to manage the resources.
+ *
+ * pushMonitoringEndpoint:
+ * If the job manager pushes out state changes to a database or bus, specify the service endpoint.
+ * Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
+ *
+ * jobManagerBinPath:
+ * Path to the Job Manager Installation Binary directory.
+ *
+ * jobManagerCommands:
+ * An enumeration of commonly used manager commands.
+ *
+*/
+struct ResourceJobManager {
+ 1: required string resourceJobManagerId = DEFAULT_ID,
+ 2: required ResourceJobManagerType resourceJobManagerType,
+ 3: optional string pushMonitoringEndpoint,
+ 4: optional string jobManagerBinPath,
+ 5: optional map<JobManagerCommand, string> jobManagerCommands
+}
+
+/**
+ * Enumeration of File Systems on the resource
+ *
+ * FORK:
+ * Forking of commands without any job manager
+ *
+ * PBS:
+ * Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ *
+ * UGE:
+ * Univa Grid Engine, a variation of PBS implementation.
+ *
+ * SLURM:
+ * The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+*/
+enum FileSystems {
+ HOME,
+ WORK,
+ LOCALTMP,
+ SCRATCH,
+ ARCHIVE
+}
+
+/**
+ * Batch Queue Information on SuperComputers
+ *
+ * maxRunTime:
+ * Maximum allowed run time in hours.
+*/
+struct BatchQueue {
+ 1: required string queueName,
+ 2: optional string queueDescription,
+ 3: optional i32 maxRunTime,
+ 4: optional i32 maxNodes,
+ 5: optional i32 maxProcessors,
+ 6: optional i32 maxJobsInQueue,
+ 7: optional i32 maxMemory
+}
+
+/**
+ * Enumeration of security authentication and authorization mechanisms supported by Airavata. This enumeration just
+ * describes the supported mechanism. The corresponding security credentials are registered with Airavata Credential
+ * store.
+ *
+ * USERNAME_PASSWORD:
+ * A User Name.
+ *
+ * SSH_KEYS:
+ * SSH Keys
+ *
+ * FIXME: Change GSI to a more precise generic security protocol - X509
+ *
+*/
+enum SecurityProtocol {
+ USERNAME_PASSWORD,
+ SSH_KEYS,
+ GSI,
+ KERBEROS,
+ OAUTH
+}
+
+/**
+ * Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
+ *
+ * SSH:
+ * Execute remote job submission commands using via secure shell protocol.
+ *
+ * GRAM:
+ * Execute remote jobs via Globus GRAM service.
+ *
+ * UNICORE:
+ * Execute remote jobs via Unicore services
+ *
+*/
+enum JobSubmissionProtocol {
+ LOCAL,
+ SSH,
+ GLOBUS,
+ UNICORE,
+ CLOUD
+}
+
+/**
+* Monitoring modes
+*
+* POLL_JOB_MANAGER:
+* GFac need to pull job status changes.
+*
+* XSEDE_AMQP_SUBSCRIBE:
+* Server will publish job status changes to amqp servert.
+*
+**/
+enum MonitorMode {
+ POLL_JOB_MANAGER,
+ JOB_EMAIL_NOTIFICATION_MONITOR,
+ XSEDE_AMQP_SUBSCRIBE
+}
+
+/**
+ * Enumeration of data movement supported by Airavata
+ *
+ * SCP:
+ * Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ *
+ * SFTP:
+ * The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+ * GridFTP:
+ * Globus File Transfer Protocol
+ *
+ * UNICORE_STORAGE_SERVICE:
+ * Storage Service Provided by Unicore
+ *
+*/
+enum DataMovementProtocol {
+ LOCAL,
+ SCP,
+ SFTP,
+ GridFTP,
+ UNICORE_STORAGE_SERVICE
+}
+
+/**
+ * Data Movement through Secured Copy
+ *
+ * alternativeSCPHostName:
+ * If the login to scp is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ * If a non-default port needs to used, specify it.
+*/
+struct SCPDataMovement {
+ 1: required string dataMovementInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: optional string alternativeSCPHostName,
+ 4: optional i32 sshPort = 22
+}
+
+/**
+ * Data Movement through GridFTP
+ *
+ * alternativeSCPHostName:
+ * If the login to scp is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ * If a non-default port needs to used, specify it.
+*/
+struct GridFTPDataMovement {
+ 1: required string dataMovementInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: required list<string> gridFTPEndPoints
+}
+
+/**
+ * Data Movement through UnicoreStorage
+ *
+ * unicoreEndPointURL:
+ * unicoreGateway End Point. The provider will query this service to fetch required service end points.
+*/
+struct UnicoreDataMovement {
+ 1: required string dataMovementInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: required string unicoreEndPointURL
+}
+
+/**
+ * Locally Fork Jobs as OS processes
+ *
+ * alternativeSSHHostName:
+ * If the login to ssh is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ * If a non-default port needs to used, specify it.
+*/
+struct LOCALSubmission {
+ 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+ 2: required ResourceJobManager resourceJobManager
+}
+
+/**
+ * LOCAL
+ *
+ * alternativeSCPHostName:
+ * If the login to scp is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ * If a non-defualt port needs to used, specify it.
+*/
+struct LOCALDataMovement {
+ 1: required string dataMovementInterfaceId = DEFAULT_ID,
+}
+
+/**
+ * Authenticate using Secured Shell
+ *
+ * alternativeSSHHostName:
+ * If the login to ssh is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ * If a non-default port needs to used, specify it.
+*/
+struct SSHJobSubmission {
+ 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: required ResourceJobManager resourceJobManager,
+ 4: optional string alternativeSSHHostName,
+ 5: optional i32 sshPort = 22,
+ 6: optional MonitorMode monitorMode,
+}
+
+struct GlobusJobSubmission {
+ 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: optional list<string> globusGateKeeperEndPoint
+}
+
+/**
+ * Unicore Job Submission
+ *
+ * unicoreEndPointURL:
+ * unicoreGateway End Point. The provider will query this service to fetch required service end points.
+ * authenticationMode
+ * The authenticationMode defines the way certificate is fetched.
+*/
+struct UnicoreJobSubmission {
+ 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: required string unicoreEndPointURL,
+}
+
+
+
+/**
+* Provider name
+**/
+enum ProviderName {
+ EC2,
+ AWSEC2,
+ RACKSPACE
+}
+
+/**
+ * Cloud Job Submission
+ *
+ *
+*/
+struct CloudJobSubmission {
+ 1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+ 2: required SecurityProtocol securityProtocol,
+ 3: required string nodeId,
+ 4: required string executableType,
+ 5: required ProviderName providerName,
+ 6: required string userAccountName
+}
+
+/**
+ * Job Submission Interfaces
+ *
+ * jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
+ *
+ * priorityOrder:
+ * For resources with multiple interfaces, the priority order should be selected.
+ * Lower the numerical number, higher the priority
+ *
+*/
+struct JobSubmissionInterface {
+ 1: required string jobSubmissionInterfaceId,
+ 2: required JobSubmissionProtocol jobSubmissionProtocol
+ 3: required i32 priorityOrder = 0,
+}
+
+/**
+ * Data Movement Interfaces
+ *
+ * dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
+ *
+ * priorityOrder:
+ * For resources with multiple interfaces, the priority order should be selected.
+ * Lower the numerical number, higher the priority
+ *
+*/
+struct DataMovementInterface {
+ 1: required string dataMovementInterfaceId,
+ 2: required DataMovementProtocol dataMovementProtocol,
+ 3: required i32 priorityOrder = 0,
+}
+
+/**
+ * Computational Resource Description
+ *
+ * computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
+ *
+ * hostName:
+ * Fully Qualified Host Name.
+ *
+ * hostAliases:
+ * Aliases if any.
+ *
+ * ipAddress:
+ * IP Addresses of the Resource.
+ *
+ * resourceDescription:
+ * A user friendly description of the resource.
+ *
+ * JobSubmissionProtocols:
+ * A computational resources may have one or more ways of submitting Jobs. This structure
+ * will hold all available mechanisms to interact with the resource.
+ * The key is the priority
+ *
+ * DataMovementProtocol:
+ * Option to specify a prefered data movement mechanism of the available options.
+ *
+ * fileSystems:
+ * Map of file systems type and the path.
+ *
+*/
+struct ComputeResourceDescription {
+// 1: required bool isEmpty = 0,
+ 1: required string computeResourceId = DEFAULT_ID,
+ 2: required string hostName,
+ 3: optional list<string> hostAliases,
+ 4: optional list<string> ipAddresses,
+ 5: optional string resourceDescription,
+ 6: optional list<BatchQueue> batchQueues,
+ 7: optional map<FileSystems, string> fileSystems,
+ 8: optional list<JobSubmissionInterface> jobSubmissionInterfaces,
+ 9: optional list<DataMovementInterface> dataMovementInterfaces,
+ 10: optional i32 maxMemoryPerNode
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/experiment-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/experiment-model.thrift b/thrift-interface-descriptions/airavata-api/experiment-model.thrift
new file mode 100644
index 0000000..b3ead51
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/experiment-model.thrift
@@ -0,0 +1,422 @@
+/*
+ * 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.
+ *
+ */
+
+include "compute-resource-model.thrift"
+include "application-interface-model.thrift"
+
+namespace java org.apache.airavata.model.workspace.experiment
+namespace php Airavata.Model.Workspace.Experiment
+namespace cpp apache.airavata.model.workspace.experiment
+namespace py apache.airavata.model.workspace.experiment
+
+/*
+ * This file describes the definitions of the.airavata.registry.core.experiment.Data Structures. Each of the
+ * language specific Airavata Client SDK's will translate this neutral data model into an
+ * appropriate form for passing to the Airavata Server Execution API Calls.
+ *
+ * The Experiment data model is divided into 6 categories: experiment metadata, experiment configuration
+ * data, experiment generated data, experiment monitoring data, provenance data and error handling data.
+ *
+ * Experiment Metadata:
+ * this structure holds the owner of the experiment, name, description, creation and last update times,
+ * last known status, and if is private to the user or shared publicly.
+ * FIXME: To start with, we will not define this but populate it inferring data from other structures. This
+ * structure needs revisiting once the API gets used.
+ *
+ * Experiment Configuration Data:
+ * this structure will contain all user provided configuration data.
+ *
+ * Experiment Generated Data:
+ * this structure describes all intermediate and output data generated by executing the experiment.
+ *
+ * Experiment Monitoring Data:
+ * this structure contains fine grained experiment status information.
+ *
+ * Experiment Summary Data:
+ * this is derived information from all experiment objects to provide a quick summary.
+ *
+*/
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+const string DEFAULT_PROJECT_NAME = "DEFAULT"
+const string SINGLE_APP_NODE_NAME = "SINGLE_APP_NODE"
+
+enum ExperimentState {
+ CREATED,
+ VALIDATED,
+ SCHEDULED,
+ LAUNCHED,
+ EXECUTING,
+ CANCELING,
+ CANCELED,
+ SUSPENDED,
+ COMPLETED,
+ FAILED,
+ UNKNOWN
+}
+
+enum ExperimentSearchFields {
+ EXPERIMENT_NAME,
+ EXPERIMENT_DESC,
+ APPLICATION_ID,
+ FROM_DATE,
+ TO_DATE,
+ STATUS
+}
+
+struct ExperimentStatus {
+ 1: required ExperimentState experimentState,
+ 2: optional i64 timeOfStateChange
+}
+
+enum WorkflowNodeState {
+ INVOKED,
+ EXECUTING,
+ CANCELING,
+ CANCELED,
+ SUSPENDED,
+ COMPLETED,
+ FAILED,
+ UNKNOWN
+}
+
+struct WorkflowNodeStatus {
+ 1: required WorkflowNodeState workflowNodeState,
+ 2: optional i64 timeOfStateChange
+}
+
+enum TaskState {
+ WAITING,
+ STARTED,
+ PRE_PROCESSING,
+ CONFIGURING_WORKSPACE,
+ INPUT_DATA_STAGING,
+ OUTPUT_DATA_STAGING,
+ POST_PROCESSING,
+ EXECUTING,
+ CANCELING,
+ CANCELED,
+ COMPLETED,
+ FAILED,
+ UNKNOWN
+}
+
+struct TaskStatus {
+ 1: required TaskState executionState,
+ 2: optional i64 timeOfStateChange
+}
+
+enum JobState {
+ SUBMITTED,
+ UN_SUBMITTED,
+ SETUP,
+ QUEUED,
+ ACTIVE,
+ COMPLETE,
+ CANCELING,
+ CANCELED,
+ FAILED,
+ HELD,
+ SUSPENDED,
+ UNKNOWN
+}
+
+struct JobStatus {
+ 1: required JobState jobState,
+ 2: optional i64 timeOfStateChange
+}
+
+enum TransferState {
+ DIRECTORY_SETUP,
+ UPLOAD,
+ DOWNLOAD,
+ ACTIVE,
+ COMPLETE,
+ STDOUT_DOWNLOAD,
+ STDERROR_DOWNLOAD,
+ CANCELING,
+ CANCELED,
+ FAILED,
+ HELD,
+ SUSPENDED,
+ UNKNOWN
+}
+
+struct TransferStatus {
+ 1: required TransferState transferState,
+ 2: optional i64 timeOfStateChange
+}
+
+struct ApplicationStatus {
+ 1: required string applicationState,
+ 2: optional i64 timeOfStateChange
+}
+
+enum ActionableGroup {
+ RESOURCE_ADMINS,
+ AIRAVATA_ADMINS,
+ GATEWAYS_ADMINS,
+ USER,
+ CANNOT_BE_DETERMINED
+}
+
+enum ErrorCategory {
+ FILE_SYSTEM_FAILURE,
+ APPLICATION_FAILURE,
+ RESOURCE_NODE_FAILURE,
+ DISK_FULL,
+ INSUFFICIENT_ALLOCATION,
+ SYSTEM_MAINTENANCE,
+ AIRAVATA_INTERNAL_ERROR,
+ CANNOT_BE_DETERMINED
+}
+
+enum CorrectiveAction {
+ RETRY_SUBMISSION,
+ CONTACT_SUPPORT,
+ CANNOT_BE_DETERMINED
+}
+
+/**
+ * A structure holding the Computational Resource Scheduling.
+ *
+*/
+struct ComputationalResourceScheduling {
+ 1: optional string resourceHostId,
+ 2: optional i32 totalCPUCount,
+ 3: optional i32 nodeCount,
+ 4: optional i32 numberOfThreads,
+ 5: optional string queueName,
+ 6: optional i32 wallTimeLimit,
+ 7: optional i32 jobStartTime,
+ 8: optional i32 totalPhysicalMemory,
+ 9: optional string computationalProjectAccount,
+ 10: optional string chassisName
+}
+
+/**
+ * A structure holding specified input data handling.
+ *
+*/
+struct AdvancedInputDataHandling {
+ 1: optional bool stageInputFilesToWorkingDir = 0,
+ 2: optional string parentWorkingDirectory,
+ 3: optional string uniqueWorkingDirectory,
+ 4: optional bool cleanUpWorkingDirAfterJob = 0
+}
+
+/**
+ * A structure holding specified output data handling.
+ *
+*/
+struct AdvancedOutputDataHandling {
+ 2: optional string outputDataDir,
+ 3: optional string dataRegistryURL,
+ 4: optional bool persistOutputData = 1
+}
+
+/**
+ * A structure holding Quality of Service Parameters.
+ *
+*/
+struct QualityOfServiceParams {
+ 1: optional string startExecutionAt,
+ 2: optional string executeBefore,
+ 3: optional i32 numberofRetries
+}
+
+/**
+ * A structure holding the experiment configuration.
+ *
+ *
+*/
+struct UserConfigurationData {
+ 1: required bool airavataAutoSchedule = 0,
+ 2: required bool overrideManualScheduledParams = 0,
+ 3: optional bool shareExperimentPublicly = 0,
+ 4: optional ComputationalResourceScheduling computationalResourceScheduling,
+ 5: optional AdvancedInputDataHandling advanceInputDataHandling,
+ 6: optional AdvancedOutputDataHandling advanceOutputDataHandling,
+ 7: optional QualityOfServiceParams qosParams,
+ 8: optional bool throttleResources = 0,
+ 9: optional string userDN,
+ 10: optional bool generateCert = 0
+}
+
+struct ErrorDetails {
+ 1: required string errorID = DEFAULT_ID,
+ 2: optional i64 creationTime,
+ 3: optional string actualErrorMessage,
+ 4: optional string userFriendlyMessage,
+ 5: optional ErrorCategory errorCategory,
+ 6: optional bool transientOrPersistent = 0,
+ 7: optional CorrectiveAction correctiveAction,
+ 8: optional ActionableGroup actionableGroup,
+ 9: optional list<string> rootCauseErrorIdList
+}
+
+struct JobDetails {
+ 1: required string jobID = DEFAULT_ID,
+ 2: required string jobDescription,
+ 3: optional i64 creationTime,
+ 4: optional JobStatus jobStatus,
+ 5: optional ApplicationStatus applicationStatus,
+ 6: optional list<ErrorDetails> errors,
+ 7: optional string computeResourceConsumed,
+ 8: optional string jobName,
+ 9: optional string workingDir
+}
+
+struct DataTransferDetails {
+ 1: required string transferID = DEFAULT_ID,
+ 2: optional i64 creationTime,
+ 3: required string transferDescription,
+ 4: optional TransferStatus transferStatus,
+}
+
+/**
+ * A structure holding the actual execution context decided based on user provided configuration data or system inferred
+ * information from scheduling and QoS parameters. One experiment can have multiple tasks. Each tasks results in
+ * data transfers and jobs
+ *
+*/
+struct TaskDetails {
+ 1: required string taskID = DEFAULT_ID,
+ 2: optional i64 creationTime,
+ 3: optional string applicationId,
+ 4: optional string applicationVersion,
+ 5: optional string applicationDeploymentId,
+ 6: optional list<applicationInterfaceModel.InputDataObjectType> applicationInputs,
+ 7: optional list<applicationInterfaceModel.OutputDataObjectType> applicationOutputs,
+ 8: optional ComputationalResourceScheduling taskScheduling,
+ 9: optional AdvancedInputDataHandling advancedInputDataHandling,
+ 10: optional AdvancedOutputDataHandling advancedOutputDataHandling,
+ 11: optional TaskStatus taskStatus,
+ 12: optional list<JobDetails> jobDetailsList,
+ 13: optional list<DataTransferDetails> dataTransferDetailsList,
+ 14: optional list<ErrorDetails> errors,
+ 15: optional bool enableEmailNotification,
+ 16: optional list<string> emailAddresses,
+}
+
+enum ExecutionUnit {
+ INPUT,
+ APPLICATION,
+ OUTPUT,
+ OTHER
+}
+
+
+/**
+* A structure holding the node data.
+* nodeInstanceId - unique node identifier for each run
+*/
+struct WorkflowNodeDetails {
+ 1: required string nodeInstanceId = DEFAULT_ID,
+ 2: optional i64 creationTime,
+ 3: required string nodeName = SINGLE_APP_NODE_NAME,
+ 4: required ExecutionUnit executionUnit = ExecutionUnit.APPLICATION,
+ 5: optional string executionUnitData,
+ 6: optional list<applicationInterfaceModel.InputDataObjectType> nodeInputs,
+ 7: optional list<applicationInterfaceModel.OutputDataObjectType> nodeOutputs,
+ 8: optional WorkflowNodeStatus workflowNodeStatus,
+ 9: optional list<TaskDetails> taskDetailsList,
+ 10: optional list<ErrorDetails> errors
+}
+
+/**
+* This data structure can be used to store the validation results
+* captured during validation step and during the launchExperiment
+* operation it can be easilly checked to see the errors occured
+* during the experiment launch operation
+**/
+
+struct ValidatorResult {
+ 1: required bool result,
+ 2: optional string errorDetails
+}
+
+
+struct ValidationResults {
+ 1: required bool validationState,
+ 2: required list<ValidatorResult> validationResultList
+}
+/**
+ * A structure holding the experiment metadata and its child models.
+ *
+ * userName:
+ * The user name of the targeted gateway end user on whose behalf the experiment is being created.
+ * the associated gateway identity can only be inferred from the security hand-shake so as to avoid
+ * authorized Airavata Clients mimicking an unauthorized request. If a gateway is not registered with
+ * Airavata, an authorization exception is thrown.
+ *
+ * experimentName:
+ * The name of the experiment as defined by the user. The name need not be unique as uniqueness is enforced
+ * by the generated experiment id.
+ *
+ * experimentDescription:
+ * The verbose description of the experiment. This is an optional parameter.
+*/
+
+struct Experiment {
+ 1: required string experimentID = DEFAULT_ID,
+ 2: required string projectID = DEFAULT_PROJECT_NAME,
+ 3: optional i64 creationTime,
+ 4: required string userName,
+ 5: required string name,
+ 6: optional string description,
+ 7: optional string applicationId,
+ 8: optional string applicationVersion,
+ 9: optional string workflowTemplateId,
+ 10: optional string workflowTemplateVersion,
+ 11: optional string gatewayExecutionId,
+ 12: optional bool enableEmailNotification,
+ 13: optional list<string> emailAddresses,
+ 14: optional UserConfigurationData userConfigurationData,
+ 15: optional string workflowExecutionInstanceId,
+ 16: optional list<applicationInterfaceModel.InputDataObjectType> experimentInputs,
+ 17: optional list<applicationInterfaceModel.OutputDataObjectType> experimentOutputs,
+ 18: optional ExperimentStatus experimentStatus,
+ 19: optional list<WorkflowNodeStatus> stateChangeList,
+ 20: optional list<WorkflowNodeDetails> workflowNodeDetailsList,
+ 21: optional list<ErrorDetails> errors
+}
+
+struct ExperimentSummary {
+ 1: required string experimentID,
+ 2: required string projectID,
+ 3: optional i64 creationTime,
+ 4: required string userName,
+ 5: required string name,
+ 6: optional string description,
+ 7: optional string applicationId,
+ 8: optional ExperimentStatus experimentStatus,
+}
+
+struct ExperimentStatistics {
+ 1: required i32 allExperimentCount,
+ 2: required i32 completedExperimentCount,
+ 3: optional i32 cancelledExperimentCount,
+ 4: required i32 failedExperimentCount,
+ 5: required list<ExperimentSummary> allExperiments,
+ 6: optional list<ExperimentSummary> completedExperiments,
+ 7: optional list<ExperimentSummary> failedExperiments,
+ 8: optional list<ExperimentSummary> cancelledExperiments,
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift b/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift
new file mode 100644
index 0000000..9045547
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ *
+ */
+
+namespace java org.apache.airavata.model.appcatalog.gatewayprofile
+namespace php Airavata.Model.AppCatalog.GatewayProfile
+namespace cpp apache.airavata.model.appcatalog.gatewayprofile
+namespace py apache.airavata.model.appcatalog.gatewayprofile
+
+include "compute-resource-model.thrift"
+
+/**
+ * Gateway specific preferences for a Computer Resource
+ *
+ * computeResourceId:
+ * Corelate the preference to a compute resource.
+ *
+ * overridebyAiravata:
+ * If turned true, Airavata will override the preferences of better alternatives exist.
+ *
+ * loginUserName:
+ * If turned true, Airavata will override the preferences of better alternatives exist.
+ *
+ * preferredJobSubmissionProtocol:
+ * For resources with multiple job submission protocols, the gateway can pick a preferred option.
+ *
+ * preferredDataMovementProtocol:
+ * For resources with multiple data movement protocols, the gateway can pick a preferred option.
+ *
+ * preferredBatchQueue:
+ * Gateways can choose a defualt batch queue based on average job dimention, reservations or other metrics.
+ *
+ * scratchLocation:
+ * Path to the local scratch space on a HPC cluster. Typically used to create working directory for job execution.
+ *
+ * allocationProjectNumber:
+ * Typically used on HPC machines to charge computing usage to a account number. For instance, on XSEDE once an
+ * allocation is approved, an allocation number is assigned. Before passing this number with job submittions, the
+ * account to be used has to be added to the allocation.
+ *
+*/
+struct ComputeResourcePreference {
+ 1: required string computeResourceId,
+ 2: required bool overridebyAiravata = 1,
+ 3: optional string loginUserName,
+ 4: optional computeResourceModel.JobSubmissionProtocol preferredJobSubmissionProtocol,
+ 5: optional computeResourceModel.DataMovementProtocol preferredDataMovementProtocol,
+ 6: optional string preferredBatchQueue,
+ 7: optional string scratchLocation,
+ 8: optional string allocationProjectNumber
+}
+
+/**
+ * Gateway Resource Profile
+ *
+ * gatewayID:
+ * Unique identifier for the gateway assigned by Airavata. Corelate this to Airavata Admin API Gateway Registration.
+ *
+ * computeResourcePreferences:
+ * List of resource preferences for each of the registered compute resources.
+ *
+ *
+*/
+struct GatewayResourceProfile {
+ 1: required string gatewayID,
+ 2: optional list<ComputeResourcePreference> computeResourcePreferences
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/messaging-events.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/messaging-events.thrift b/thrift-interface-descriptions/airavata-api/messaging-events.thrift
new file mode 100644
index 0000000..45de9ec
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/messaging-events.thrift
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ *
+ */
+
+include "experiment-model.thrift"
+include "application-interface-model.thrift"
+
+namespace java org.apache.airavata.model.messaging.event
+namespace php Airavata.Model.Messaging.Event
+namespace cpp apache.airavata.model.messaging.event
+namespace py apache.airavata.model.messaging.event
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+enum MessageLevel {
+ INFO,
+ DEBUG,
+ ERROR,
+ ACK
+}
+
+enum MessageType {
+ EXPERIMENT,
+ TASK,
+ WORKFLOWNODE,
+ JOB,
+ LAUNCHTASK,
+ TERMINATETASK,
+ TASKOUTPUT
+}
+
+struct ExperimentStatusChangeEvent {
+ 1: required experimentModel.ExperimentState state;
+ 2: required string experimentId;
+ 3: required string gatewayId;
+}
+
+struct WorkflowIdentifier {
+ 1: required string workflowNodeId;
+ 2: required string experimentId;
+ 3: required string gatewayId;
+}
+
+struct WorkflowNodeStatusChangeEvent {
+ 1: required experimentModel.WorkflowNodeState state;
+ 2: required WorkflowIdentifier workflowNodeIdentity;
+}
+
+struct TaskIdentifier {
+ 1: required string taskId;
+ 2: required string workflowNodeId;
+ 3: required string experimentId;
+ 4: required string gatewayId;
+}
+
+struct TaskStatusChangeEvent {
+ 1: required experimentModel.TaskState state;
+ 2: required TaskIdentifier taskIdentity;
+}
+
+struct TaskStatusChangeRequestEvent {
+ 1: required experimentModel.TaskState state;
+ 2: required TaskIdentifier taskIdentity;
+}
+
+struct TaskOutputChangeEvent {
+ 1: required list<applicationInterfaceModel.OutputDataObjectType> output;
+ 2: required TaskIdentifier taskIdentity;
+}
+
+struct JobIdentifier {
+ 1: required string jobId;
+ 2: required string taskId;
+ 3: required string workflowNodeId;
+ 4: required string experimentId;
+ 5: required string gatewayId;
+}
+
+//struct JobMonitor {
+// 1: optional string username;
+// 2: optional i64 jobStartedTime;
+// 3: optional i64 lastMonitoredTime;
+// 4: optional string hostId;
+// 5: optional map<string, string> parameters;
+// 6: optional string jobName;
+// 7: optional i32 failedCount = 0;
+// // FIXME - Job execution context
+// //8:
+// }
+
+struct ProcessSubmitEvent{
+ 1: required string taskId;
+ 2: required string credentialToken;
+}
+
+struct TaskSubmitEvent{
+ 1: required string experimentId,
+ 2: required string taskId,
+ 3: required string gatewayId,
+ 4: required string tokenId
+}
+
+struct TaskTerminateEvent{
+ 1: required string experimentId,
+ 2: required string taskId,
+ 3: required string gatewayId,
+ 4: required string tokenId
+}
+
+struct JobStatusChangeEvent {
+ 1: required experimentModel.JobState state;
+ 2: required JobIdentifier jobIdentity;
+}
+
+struct JobStatusChangeRequestEvent {
+ 1: required experimentModel.JobState state;
+ 2: required JobIdentifier jobIdentity;
+}
+
+struct Message {
+ 1: required binary event;
+ 2: required string messageId = DEFAULT_ID;
+ 3: required MessageType messageType;
+ 4: optional i64 updatedTime;
+ 5: optional MessageLevel messageLevel;
+}
+
+
+
+
+
+
+
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/security-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/security-model.thrift b/thrift-interface-descriptions/airavata-api/security-model.thrift
new file mode 100644
index 0000000..bda9554
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/security-model.thrift
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ *
+ */
+
+namespace java org.apache.airavata.model.security
+namespace php Airavata.Model.Security
+namespace cpp apache.airavata.model.security
+namespace py apache.airavata.model.security
+
+/*
+ * This file describes the definitions of the security model which encapsulates the information that needs to be passed
+ to the API methods in order to authenticate and authorize the users.
+ *
+*/
+
+struct AuthzToken {
+ 1: required string accessToken,
+ 2: optional map<string, string> claimsMap
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/workflow-api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/workflow-api.thrift b/thrift-interface-descriptions/airavata-api/workflow-api.thrift
new file mode 100644
index 0000000..94b6a32
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/workflow-api.thrift
@@ -0,0 +1,82 @@
+/*
+ * 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 "airavata-data-models.thrift"
+include "experiment-model.thrift"
+include "workspace-model.thrift"
+include "compute-resource-model.thrift"
+include "application-deployment-model.thrift"
+include "application-interface-model.thrift"
+include "workflow-data-model.thrift"
+
+namespace java org.apache.airavata.api.workflow
+namespace php Airavata.API.Workflow
+namespace cpp airavata.api.workflow
+namespace perl AiravataWorkflowAPI
+namespace py apache.airavata.api.workflow
+namespace js AiravataWorkflowAPI
+
+const string AIRAVATA_API_VERSION = "0.15.0"
+
+service Workflow {
+
+ list<string> getAllWorkflows()
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ workflowDataModel.Workflow getWorkflow (1: required string workflowTemplateId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ void deleteWorkflow (1: required string workflowTemplateId)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ string registerWorkflow(1: required workflowDataModel.Workflow workflow)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ void updateWorkflow (1: required string workflowTemplateId, 2: required workflowDataModel.Workflow workflow)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ string getWorkflowTemplateId (1: required string workflowName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+
+ bool isWorkflowExistWithName(1: required string workflowName)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.AiravataClientException ace,
+ 3: airavataErrors.AiravataSystemException ase)
+ }
+
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/workflow-data-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/workflow-data-model.thrift b/thrift-interface-descriptions/airavata-api/workflow-data-model.thrift
new file mode 100644
index 0000000..e0ee74a
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/workflow-data-model.thrift
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ *
+ */
+
+
+namespace java org.apache.airavata.model
+namespace php Airavata.Model
+namespace py apache.airavata.model.workflow
+
+include "application-interface-model.thrift"
+
+/*
+ * This file describes the definitions of the Airavata Execution Data Structures. Each of the
+ * language specific Airavata Client SDK's will translate this neutral data model into an
+ * appropriate form for passing to the Airavata Server Execution API Calls.
+*/
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+struct Workflow {
+ 1: required string templateId = DEFAULT_ID,
+ 2: required string name,
+ 3: optional string graph,
+ 4: optional binary image,
+ 5: optional list<applicationInterfaceModel.InputDataObjectType> workflowInputs,
+ 6: optional list<applicationInterfaceModel.OutputDataObjectType> workflowOutputs
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/airavata-api/workspace-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/workspace-model.thrift b/thrift-interface-descriptions/airavata-api/workspace-model.thrift
new file mode 100644
index 0000000..c2f6fe0
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/workspace-model.thrift
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ *
+ */
+
+include "experiment-model.thrift"
+
+namespace java org.apache.airavata.model.workspace
+namespace php Airavata.Model.Workspace
+namespace cpp apache.airavata.model.workspace
+namespace py apache.airavata.model.workspace
+
+/*
+ * This file describes the definitions of the Airavata Workspace. The workspace is a container for all user data
+ * organized as Projects and Experiment within them.
+ *
+ * The Experiment data model is divided into 6 categories: experiment metadata, experiment configuration
+ * data, experiment generated data, experiment monitoring data, provenance data and error handling data.
+ *
+ *
+*/
+
+struct Group {
+ 1: required string groupName,
+ 2: optional string description
+}
+
+struct Project {
+ 1: required string projectID = experimentModel.DEFAULT_PROJECT_NAME,
+ 2: required string owner,
+ 3: required string name,
+ 4: optional string description
+ 5: optional i64 creationTime
+ 6: optional list<string> sharedUsers,
+ 7: optional list<string> sharedGroups
+}
+
+struct User {
+ 1: required string userName,
+ 2: optional list<Group> groupList
+}
+
+struct Gateway {
+ 1: required string gatewayId,
+ 2: optional string gatewayName,
+ 3: optional string domain,
+ 4: optional string emailAddress
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/generate-thrift-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/generate-thrift-stubs.sh b/thrift-interface-descriptions/generate-thrift-stubs.sh
new file mode 100755
index 0000000..aed6dc8
--- /dev/null
+++ b/thrift-interface-descriptions/generate-thrift-stubs.sh
@@ -0,0 +1,300 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# This script will generate/regenerate the thrift code for Airavata Server Skeletons, Client Stubs
+# and Data Model java beans in java, C++, PHP and Python.
+
+show_usage() {
+ echo -e "Usage: $0 [Languague to generate stubs]"
+ echo ""
+ echo "options:"
+ echo -e "\tjava Generate/Update Java Stubs"
+ echo -e "\tphp Generate/Update PHP Stubs"
+ echo -e "\tcpp Generate/Update C++ Stubs"
+ echo -e "\tpython Generate/Update Python Stubs."
+ echo -e "\tall Generate/Update all stubs (Java, PHP, C++, Python)."
+ echo -e "\t-h[elp] Print the usage options of this script"
+}
+
+if [ $# -lt 1 ]
+then
+ show_usage
+ exit 1
+fi
+
+if [[ $1 == "-h" ||$1 == "--help" ]]
+then
+ show_usage
+ exit 0
+fi
+
+# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
+# Verify is thrift is installed, is in the path is at a specified version.
+
+REQUIRED_THRIFT_VERSION='0.9.2'
+THRIFT_EXEC=/usr/local/bin/thrift
+
+VERSION=$($THRIFT_EXEC -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" | wc -l)
+if [ "$VERSION" -ne 1 ] ; then
+ echo -e "ERROR:\t Apache Thrift version ${REQUIRED_THRIFT_VERSION} is required."
+ echo -e "It is either not installed or is not in the path"
+ exit 1
+fi
+
+# Global Constants used across the script
+AIRAVATA_API_IDL_DIR='airavata-api'
+BASE_TARGET_DIR='target'
+DATAMODEL_SRC_DIR='../airavata-api/airavata-data-models/src/main/java'
+JAVA_API_SDK_DIR='../airavata-api/airavata-api-stubs/src/main/java'
+PHP_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib'
+CPP_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/'
+PYTHON_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/'
+
+# Initialize the thrift arguments.
+# Since most of the Airavata API and Data Models have includes, use recursive option by default.
+# Generate all the files in target directory
+THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
+# Ensure the required target directories exists, if not create.
+mkdir -p ${BASE_TARGET_DIR}
+
+# The Function fail prints error messages on failure and quits the script.
+fail() {
+ echo $@
+ exit 1
+}
+
+# The function add_license_header adds the ASF V2 license header to all java files within the specified generated
+# directory. The function also adds suppress all warnings annotation to all public classes and enum's
+# To Call:
+# add_license_header $generated_code_directory
+add_license_header() {
+
+ # Fetch the generated code directory passed as the argument
+ GENERATED_CODE_DIR=$1
+
+ # For each source file within the generated directory, add the ASF V2 LICENSE header
+ FILE_SUFFIXES=(.php .java .h .cpp)
+ for file in "${FILE_SUFFIXES[@]}"; do
+ for f in $(find ${GENERATED_CODE_DIR} -name "*$file"); do
+ cat - ${f} >${f}-with-license <<EOF
+/**
+ * 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.
+ */
+
+EOF
+ mv ${f}-with-license ${f}
+ done
+ done
+}
+
+# The function compares every generated java file with the one in specified existing source location. If the comparison
+# shows a difference, then it replaces with the newly generated file (with added license header).
+# To Call:
+# copy_changed_files $generated_code_directory $existing_source_directory
+copy_changed_files() {
+
+ # Read all the function arguments
+ GENERATED_CODE_DIR=$1
+ WORKSPACE_SRC_DIR=$2
+
+ echo "Generated sources are in ${GENERATED_CODE_DIR}"
+ echo "Destination workspace is in ${WORKSPACE_SRC_DIR}"
+
+ # Check if the newly generated files exist in the targeted workspace, if not copy. Only changed files will be synced.
+ # the extra slash to GENERATED_CODE_DIR is needed to ensure the parent directory itself is not copied.
+ rsync -auv ${GENERATED_CODE_DIR}/ ${WORKSPACE_SRC_DIR}
+}
+
+#######################################
+# Generate/Update Airavata Data Model #
+#######################################
+
+generate_java_stubs() {
+
+ #Java Beans generation directory
+ JAVA_BEAN_GEN_DIR=${BASE_TARGET_DIR}/gen-javabean
+
+ # As a precaution remove and previously generated files if exists
+ rm -rf ${JAVA_BEAN_GEN_DIR}
+
+ # Generate the Airavata Data Model using thrift Java Beans generator. This will take generate the classes in bean style
+ # with members being private and setters returning voids.
+ # The airavata-data-models.thrift includes rest of data models.
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/airavata-data-models.thrift || fail unable to generate java bean thrift classes on base data model
+
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/app-catalog-models.thrift || fail unable to generate java bean thrift classes on app catalog data models
+
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/workflow-data-model.thrift || fail unable to generate java bean thrift classes on app workflow data models
+
+ # For the generated java beans add the ASF V2 License header
+ add_license_header $JAVA_BEAN_GEN_DIR
+
+ # Compare the newly generated beans with existing sources and replace the changed ones.
+ copy_changed_files ${JAVA_BEAN_GEN_DIR} ${DATAMODEL_SRC_DIR}
+
+ ###############################################################################
+ # Generate/Update source used by Airavata Server Skeletons & Java Client Stubs #
+ # JAVA server and client both use generated api-boilerplate-code #
+ ###############################################################################
+
+ #Java generation directory
+ JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
+
+ # As a precaution remove and previously generated files if exists
+ rm -rf ${JAVA_GEN_DIR}
+
+ # Using thrift Java generator, generate the java classes based on Airavata API. This
+ # The airavata-api.thrift includes rest of data models.
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen java ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate java thrift classes on AiravataAPI
+
+ #$THRIFT_EXEC ${THRIFT_ARGS} --gen java ${AIRAVATA_API_IDL_DIR}/workflow-api.thrift || fail unable to generate java thrift classes on WorkflowAPI
+
+ # For the generated java classes add the ASF V2 License header
+ add_license_header $JAVA_GEN_DIR
+
+ # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
+ # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
+ copy_changed_files ${JAVA_GEN_DIR}/org/apache/airavata/api ${JAVA_API_SDK_DIR}/org/apache/airavata/api
+
+ echo "Successfully generated new java sources, compared against exiting code and replaced the changed files"
+}
+
+####################################
+# Generate/Update PHP Stubs #
+####################################
+
+generate_php_stubs() {
+
+ #PHP generation directory
+ PHP_GEN_DIR=${BASE_TARGET_DIR}/gen-php
+
+ # As a precaution remove and previously generated files if exists
+ rm -rf ${PHP_GEN_DIR}
+
+ # Using thrift Java generator, generate the java classes based on Airavata API. This
+ # The airavata-api.thrift includes rest of data models.
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate PHP thrift classes
+
+ #$THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_IDL_DIR}/workflow-api.thrift || fail unable to generate PHP thrift classes for WorkflowAPI
+ # For the generated java classes add the ASF V2 License header
+ ## TODO Write PHP license parser
+
+ # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
+ # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
+ copy_changed_files ${PHP_GEN_DIR} ${PHP_SDK_DIR}
+
+}
+
+####################################
+# Generate/Update C++ Client Stubs #
+####################################
+
+generate_cpp_stubs() {
+
+ #CPP generation directory
+ CPP_GEN_DIR=${BASE_TARGET_DIR}/gen-cpp
+
+ # As a precaution remove and previously generated files if exists
+ rm -rf ${CPP_GEN_DIR}
+
+ # Using thrift Java generator, generate the java classes based on Airavata API. This
+ # The airavata-api.thrift includes rest of data models.
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate C++ thrift classes
+
+ #$THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${AIRAVATA_API_IDL_DIR}/workflow-api.thrift || fail unable to generate C++ thrift classes for WorkflowAPI
+ # For the generated CPP classes add the ASF V2 License header
+ add_license_header $CPP_GEN_DIR
+
+ # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
+ # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
+ copy_changed_files ${CPP_GEN_DIR} ${CPP_SDK_DIR}
+
+}
+
+####################################
+# Generate/Update C++ Client Stubs #
+####################################
+
+generate_python_stubs() {
+
+ #Python generation directory
+ PYTHON_GEN_DIR=${BASE_TARGET_DIR}/gen-py
+
+ # As a precaution remove and previously generated files if exists
+ rm -rf ${PYTHON_GEN_DIR}
+
+ # Using thrift Python generator, generate the python classes based on Airavata API. This
+ # The airavata-api.thrift includes rest of data models.
+ $THRIFT_EXEC ${THRIFT_ARGS} --gen py ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate Python thrift classes
+
+ # For the generated CPP classes add the ASF V2 License header
+ #add_license_header #PYTHON_GEN_DIR
+
+ # Compare the newly generated classes with existing java generated skeleton/stub sources and replace the changed ones.
+ # Only copying the API related classes and avoiding copy of any data models which already exist in the data-models.
+ copy_changed_files ${PYTHON_GEN_DIR} ${PYTHON_SDK_DIR}
+
+}
+
+for arg in "$@"
+do
+ case "$arg" in
+ all) echo "Generate all stubs (Java, PHP, C++, Python) Stubs"
+ generate_java_stubs
+ generate_php_stubs
+ generate_cpp_stubs
+ generate_python_stubs
+ ;;
+ java) echo "Generating Java Stubs"
+ generate_java_stubs
+ ;;
+ php) echo "Generate PHP Stubs"
+ generate_php_stubs
+ ;;
+ cpp) echo "Generate C++ Stubs"
+ generate_cpp_stubs
+ ;;
+ python) echo "Generate Python Stubs"
+ generate_python_stubs
+ ;;
+ *) echo "Invalid or unsupported option"
+ show_usage
+ exit 1
+ ;;
+ esac
+done
+
+####################
+# Cleanup and Exit #
+####################
+# CleanUp: Delete the base target build directory
+#rm -rf ${BASE_TARGET_DIR}
+
+exit 0
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh b/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
new file mode 100755
index 0000000..8971874
--- /dev/null
+++ b/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
@@ -0,0 +1,134 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# This script will regenerate the thrift code for Airavata GFAC Server Skeltons and Client Stubs.
+
+
+# Global Constants used across the script
+REQUIRED_THRIFT_VERSION='0.9.2'
+BASE_TARGET_DIR='target'
+GFAC_SERVICE_DIR='../../modules/gfac/gfac-client/src/main/java/'
+
+# The Funcation fail prints error messages on failure and quits the script.
+fail() {
+ echo $@
+ exit 1
+}
+
+# The funcation add_license_header adds the ASF V2 license header to all java files within the specified generated
+# directory. The funcation also adds suppress all warnings annotation to all public classes and enum's
+# To Call:
+# add_license_header $generated_code_directory
+add_license_header() {
+
+ # Fetch the generated code directory passed as the argument
+ GENERATED_CODE_DIR=$1
+
+ # For all generated thrift code, add the suppress all warnings annotation
+ # NOTE: In order to save the orginal file as a backup, use sed -i.orig in place of sed -i ''
+ find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public class /@SuppressWarnings("all") public class /'
+ find ${GENERATED_CODE_DIR} -name '*.java' -print0 | xargs -0 sed -i '' -e 's/public enum /@SuppressWarnings("all") public enum /'
+
+ # For each java file within the genrated directory, add the ASF V2 LICENSE header
+ for f in $(find ${GENERATED_CODE_DIR} -name '*.java'); do
+ cat - ${f} >${f}-with-license <<EOF
+ /*
+ * 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.
+ */
+EOF
+ mv ${f}-with-license ${f}
+ done
+}
+
+# The funcation compares every generated java file with the one in specified existing source location. If the comparision
+# shows a difference, then it replaces with the newly generated file (with added license header).
+# To Call:
+# copy_changed_files $generated_code_directory $existing_source_directory
+copy_changed_files() {
+
+ # Read all the funcation arguments
+ GENERATED_CODE_DIR=$1
+ WORKSPACE_SRC_DIR=$2
+
+ echo "Generated sources are in ${GENERATED_CODE_DIR}"
+ echo "Destination workspace is in ${WORKSPACE_SRC_DIR}"
+
+ # Check if the newly generated files exist in the targetted workspace, if not copy. Only changed files will be synced.
+ # the extra slash to GENERATED_CODE_DIR is needed to ensure the parent directory itself is not copied.
+ rsync -auv ${GENERATED_CODE_DIR}/ ${WORKSPACE_SRC_DIR}
+}
+
+# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
+# Verify is thrift is installed, is in the path is at a specified version.
+VERSION=$(thrift -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" | wc -l)
+if [ "$VERSION" -ne 1 ] ; then
+ echo "****************************************************"
+ echo "*** thrift is not installed or is not in the path"
+ echo "*** expecting 'thrift -version' to return ${REQUIRED_THRIFT_VERSION}"
+ echo "*** generated code will not be updated"
+ fail "****************************************************"
+fi
+
+# Initialize the thrift arguements.
+# Since most of the Airavata API and Data Models have includes, use recursive option by defualt.
+# Generate all the files in target directory
+THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
+# Ensure the required target directories exists, if not create.
+mkdir -p ${BASE_TARGET_DIR}
+
+#######################################################################
+# Generate/Update the GFAC CPI service stubs
+# To start with both the servicer and client are in same package, but
+# needs to be split using a common generated api-boilerplate-code
+#######################################################################
+
+#Java generation directory
+JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
+
+# As a precausion remove and previously generated files if exists
+rm -rf ${JAVA_GEN_DIR}
+
+# Using thrify Java generator, generate the java classes based on Airavata API. This
+# The airavata-api.thrift includes rest of data models.
+thrift ${THRIFT_ARGS} --gen java gfac.cpi.service.thrift || fail unable to generate java thrift classes
+thrift ${THRIFT_ARGS} --gen java gfacDataModel.thrift || fail unable to generate java thrift classes
+
+
+# For the generated java classes add the ASF V2 License header
+add_license_header $JAVA_GEN_DIR
+
+# Compare the newly generated classes with existing java generated skelton/stub sources and replace the changed ones.
+copy_changed_files ${JAVA_GEN_DIR} ${GFAC_SERVICE_DIR}
+
+# CleanUp: Delete the base target build directory
+#rm -rf ${BASE_TARGET_DIR}
+
+echo "Successfully generated new sources, compared against exiting code and replaced the changed files"
+exit 0
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/gfac-cpi/gfac.cpi.service.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/gfac-cpi/gfac.cpi.service.thrift b/thrift-interface-descriptions/gfac-cpi/gfac.cpi.service.thrift
new file mode 100644
index 0000000..93d62c7
--- /dev/null
+++ b/thrift-interface-descriptions/gfac-cpi/gfac.cpi.service.thrift
@@ -0,0 +1,68 @@
+/*
+ * 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 GFac Service.
+ *
+*/
+
+namespace java org.apache.airavata.gfac.cpi
+
+const string GFAC_CPI_VERSION = "0.13.0"
+
+service GfacService {
+
+ /** Query gfac server to fetch the CPI version */
+ string getGFACServiceVersion(),
+
+ /**
+ * After creating the experiment Data and Task Data in the orchestrator
+ * Orchestrator has to invoke this operation for each Task per experiment to run
+ * the actual Job related actions.
+ *
+ * @param experimentID
+ * @param taskID
+ * @param gatewayId:
+ * The GatewayId is inferred from security context and passed onto gfac.
+ * @return sucess/failure
+ *
+ **/
+ bool submitJob (1: required string experimentId,
+ 2: required string taskId
+ 3: required string gatewayId,
+ 4: required string tokenId)
+
+ /**
+ *
+ * Terminate the running job.At this point user
+ * does not have to know the job ID so in the argument
+ * we do not make it to required jobID to provide.
+ *
+ *
+ * @param experimentID
+ * @param taskID
+ * @return sucess/failure
+ *
+ **/
+ bool cancelJob (1: required string experimentId,
+ 2: required string taskId,
+ 3: required string gatewayId,
+ 4: required string tokenId)
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/f742ebde/thrift-interface-descriptions/gfac-cpi/gfacDataModel.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/gfac-cpi/gfacDataModel.thrift b/thrift-interface-descriptions/gfac-cpi/gfacDataModel.thrift
new file mode 100644
index 0000000..883528e
--- /dev/null
+++ b/thrift-interface-descriptions/gfac-cpi/gfacDataModel.thrift
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ *
+ */
+
+include "applicationCatalogDataModel.thrift"
+
+namespace java org.apache.airavata.gfac.states
+
+/*
+ * This file describes the definitions of the Gfac Framework level Experiment Data Structures. Each of the
+ * language specific Airavata Client SDK's will translate this neutral data model into an
+ * appropriate form for passing to the Airavata Server Execution API Calls.
+ *
+ * This data-model will not be visible to the outside users but it will be used inside GFAc to recover
+ * the failed jobs or hanged jobs.
+ *
+*/
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+const string DEFAULT_PROJECT_NAME = "DEFAULT"
+const string SINGLE_APP_NODE_NAME = "SINGLE_APP_NODE"
+
+enum GfacExperimentState {
+ LAUNCHED,
+ ACCEPTED,
+ INHANDLERSINVOKING,
+ INHANDLERSINVOKED,
+ PROVIDERINVOKING,
+ JOBSUBMITTED,
+ PROVIDERINVOKED,
+ OUTHANDLERSINVOKING,
+ OUTHANDLERSINVOKED,
+ COMPLETED,
+ FAILED,
+ UNKNOWN
+}
+
+enum GfacHandlerState {
+ INVOKING,
+ INVOKED,
+ COMPLETED,
+ UNKNOWN
+}
+
+struct GfacExperimentStatus {
+ 1: required GfacExperimentState gfacExperimentState,
+ 2: optional i64 timeOfStateChange
+}