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 2014/02/07 17:30:48 UTC
[07/13] Moving Airavata-API to top level as discussed in -
http://markmail.org/thread/73wntnqlvy6konir
http://git-wip-us.apache.org/repos/asf/airavata/blob/3070c3d9/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
new file mode 100644
index 0000000..1b804d3
--- /dev/null
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -0,0 +1,413 @@
+/*
+ * 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"
+
+namespace java org.apache.airavata.api
+namespace php Airavata.API
+namespace cpp airavata.api
+namespace perl AiravataAPI
+namespace py airavata.api
+namespace js AiravataAPI
+
+/*
+ * 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 VERSION = "0.12.0"
+
+service Airavata {
+
+/*
+ * Apache Airavata API Service Methods. For data structures associated in the signatures, please see included thrift files
+*/
+
+ /** Query Airavata to fetch the API version */
+ string GetAPIVersion(),
+
+ /**
+ * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+ * but inferred from the authentication header. This experiment is just a persistent place holder. The client
+ * has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+ * registering the experiment in a persistent store.
+ *
+ * @param basicExperimentMetadata
+ * The create experiment will require the basic experiment metadata like the name and description, intended user,
+ * the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+ * the ExperimentMetadata is a required field.
+ *
+ * @return
+ * The server-side generated airavata experiment globally unique identifier.
+ *
+ * @throws org.apache.airavata.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.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.api.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: experimentModel.BasicMetadata basicExperimentMetadata)
+ 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.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.api.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.api.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.BasicMetadata getBasicExperimentMetadata(1: 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.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.api.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.api.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 configureExperiment(1: string airavataExperimentId,
+ 2: experimentModel.ConfigurationData experimentConfigurationData)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Fetch the previously configured experiment configuration information.
+ *
+ * @param airavataExperimentId
+ * The identifier for the requested experiment. This is returned during the create experiment step.
+ *
+ * @return
+ * This method returns the previously configured experiment configuration data.
+ *
+ * @throws org.apache.airavata.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.api.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.api.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.ConfigurationData getExperimentConfiguration(1: 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.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.api.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.api.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 launchConfiguredExperiment(1: string airavataExperimentId
+ 2: string airavataCredStoreToken)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+ /**
+ * Configure and Launch a previously created experiment with required inputs, scheduling, security and other quality of service
+ * parameters. This method also launches the experiment after it is configured. If you would like to configure only
+ * and launch at a later time or partially configure then ConfigureExperiment should be used.
+ *
+ * @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.
+ *
+ * @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.
+ *
+ * @return
+ * The server-side generated experiment GUID.
+ *
+ * @throws org.apache.airavata.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.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.api.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 configureAndLaunchExperiment (1: string airavataExperimentId
+ 2: experimentModel.ConfigurationData experimentConfigurationData,
+ 3: string airavataCredStoreToken)
+ 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 airavataExperimentIdToBeCloned
+ * This is the experiment identifier that is to be cloned.
+ *
+ * @param basicExperimentMetadata
+ * Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+ * the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+ * should be shared public by default.
+ *
+ * @return
+ * The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+ *
+ * @throws org.apache.airavata.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.api.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.api.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 cloneExperimentConfiguration(1: string airavataExperimentIdToBeCloned,
+ 2: experimentModel.BasicMetadata basicExperimentMetadata)
+ 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.api.error.InvalidRequestException
+ * For any incorrect forming of the request itself.
+ *
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException
+ * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ *
+ * @throws org.apache.airavata.api.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.api.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)
+ throws (1: airavataErrors.InvalidRequestException ire,
+ 2: airavataErrors.ExperimentNotFoundException enf,
+ 3: airavataErrors.AiravataClientException ace,
+ 4: airavataErrors.AiravataSystemException ase)
+
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/3070c3d9/airavata-api/thrift-interface-descriptions/airavataDataModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataDataModel.thrift b/airavata-api/thrift-interface-descriptions/airavataDataModel.thrift
new file mode 100644
index 0000000..080676e
--- /dev/null
+++ b/airavata-api/thrift-interface-descriptions/airavataDataModel.thrift
@@ -0,0 +1,29 @@
+/*
+ * 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
+
+/*
+ * 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/3070c3d9/airavata-api/thrift-interface-descriptions/airavataErrors.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataErrors.thrift b/airavata-api/thrift-interface-descriptions/airavataErrors.thrift
new file mode 100644
index 0000000..a3b4490
--- /dev/null
+++ b/airavata-api/thrift-interface-descriptions/airavataErrors.thrift
@@ -0,0 +1,148 @@
+/*
+ * 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.
+*/
+
+namespace java org.apache.airavata.api.error
+namespace php Airavata.API.Error
+namespace cpp airavata.api.error
+namespace perl AiravataAPIError
+namespace py 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: optional string identifier,
+ 2: optional string key
+}
+
+/**
+* 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
+}
+
+
+/**
+ * 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/3070c3d9/airavata-api/thrift-interface-descriptions/experimentModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/experimentModel.thrift b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
new file mode 100644
index 0000000..71e9e6a
--- /dev/null
+++ b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
@@ -0,0 +1,139 @@
+/*
+ * 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.experiment
+
+/*
+ * This file describes the definitions of the Airavata 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.
+ *
+*/
+
+/**
+ * A structure holding the basic experiment metadata.
+ *
+ * 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 BasicMetadata {
+ 1: required string userName,
+ 2: required string experimentName,
+ 3: optional string experimentDescription,
+ 4: optional bool shareExperimentPublicly = 0
+}
+
+/**
+ * A structure holding the Computational Resource Scheduling.
+ *
+*/
+struct ComputationalResourceScheduling {
+ 1:required bool airavataAutoSchedule = 1
+ 2:required bool overrideManualScheduledParams = 0,
+ 3:optional string resourceHostId,
+ 4:optional i32 totalCPUCount,
+ 5:optional i32 nodeCount,
+ 6:optional i32 numberOfThreads,
+ 7:optional string queueName,
+ 8:optional i32 wallTimeLimit,
+ 9:optional i32 jobStartTime,
+ 10:optional i32 totalPhysicalMemory,
+ 11:optional string ComputationalProjectAccount
+}
+
+/**
+ * A structure holding specified input data handling.
+ *
+*/
+struct AdvancedInputDataHandling {
+ 1:optional bool stageInputFilesToWorkingDir = 0,
+ 2: optional string workingDirectoryParent,
+ 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 ConfigurationData {
+ 1: optional BasicMetadata basicMetadata,
+ 2: optional string applicationId,
+ 3: optional string applicationVersion,
+ 4: optional string workflowTemplateId,
+ 5: optional string worklfowTemplateVersion,
+ 6: optional map<string,string> experimentInputs,
+ 7: optional ComputationalResourceScheduling computationalResourceScheduling,
+ 8: optional AdvancedInputDataHandling advanceInputDataHandling,
+ 9: optional AdvancedOutputDataHandling advanceOutputDataHandling,
+ 10: optional QualityOfServiceParams qosParams
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/3070c3d9/modules/airavata-api/client-sdks/pom.xml
----------------------------------------------------------------------
diff --git a/modules/airavata-api/client-sdks/pom.xml b/modules/airavata-api/client-sdks/pom.xml
deleted file mode 100644
index 71a6cbb..0000000
--- a/modules/airavata-api/client-sdks/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>airavata-api</artifactId>
- <groupId>org.apache.airavata</groupId>
- <version>0.12-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>airavata-client-sdks</artifactId>
- <packaging>jar</packaging>
- <name>Airavata Client SDKS</name>
- <url>http://airavata.apache.org/</url>
-
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/3070c3d9/modules/airavata-api/datamodel/pom.xml
----------------------------------------------------------------------
diff --git a/modules/airavata-api/datamodel/pom.xml b/modules/airavata-api/datamodel/pom.xml
deleted file mode 100644
index 10b0173..0000000
--- a/modules/airavata-api/datamodel/pom.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>airavata-api</artifactId>
- <groupId>org.apache.airavata</groupId>
- <version>0.12-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <artifactId>airavata-datamodel</artifactId>
- <packaging>jar</packaging>
- <name>Airavata Data Models </name>
- <url>http://airavata.apache.org/</url>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.thrift</groupId>
- <artifactId>libthrift</artifactId>
- <version>0.9.1</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.5</version>
- </dependency>
- </dependencies>
-
-</project>