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>
