Updated thrift model structure.
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e76851d0 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e76851d0 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e76851d0 Branch: refs/heads/master Commit: e76851d04f11c2863fb8ef227e2d3304790f938a Parents: debeae0 Author: Shameera Rathanyaka <[email protected]> Authored: Fri Jun 12 17:36:14 2015 -0400 Committer: Shameera Rathanyaka <[email protected]> Committed: Fri Jun 12 17:36:14 2015 -0400 ---------------------------------------------------------------------- .../airavata-api/airavata_api.thrift | 27 +- .../airavata-api/airavata_commons.thrift | 54 +++ .../airavata-api/airavata_errors.thrift | 15 - .../application_interface_model.thrift | 96 +---- .../airavata-api/application_io_models.thrift | 118 ++++++ .../airavata-api/experiment_model.thrift | 399 ++----------------- .../airavata-api/messaging_events.thrift | 27 +- .../airavata-api/process_model.thrift | 56 +++ .../airavata-api/scheduling_model.thrift | 39 ++ .../airavata-api/status_models.thrift | 102 +++++ .../airavata-api/task_model.thrift | 75 ++++ .../airavata-api/workflow_data_model.thrift | 6 +- .../airavata-api/workspace_model.thrift | 4 +- .../airavata_commons.thrift | 23 +- .../experiment_model.thrift | 105 +++++ .../airavata-data-models/process_model.thrift | 23 +- .../airavata-data-models/status_models.thrift | 56 ++- .../airavata-data-models/task_model.thrift | 4 +- 18 files changed, 706 insertions(+), 523 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index fc85c1e..12a4773 100644 --- a/thrift-interface-descriptions/airavata-api/airavata_api.thrift +++ b/thrift-interface-descriptions/airavata-api/airavata_api.thrift @@ -26,6 +26,7 @@ include "airavata_errors.thrift" include "airavata_data_models.thrift" +include "status_models.thrift" include "experiment_model.thrift" include "workspace_model.thrift" include "compute_resource_model.thrift" @@ -312,7 +313,7 @@ service Airavata { * Instead use searchExperimentsByNameWithPagination * */ - list<experiment_model.ExperimentSummary> searchExperimentsByName (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByName (1: required string gatewayId, 2: required string userName, 3: required string expName) throws (1: airavata_errors.InvalidRequestException ire, 2: airavata_errors.AiravataClientException ace, @@ -333,7 +334,7 @@ service Airavata { * @param offset * The starting point of the results to be fetched */ - list<experiment_model.ExperimentSummary> searchExperimentsByNameWithPagination (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByNameWithPagination (1: required string gatewayId, 2: required string userName, 3: required string expName, 4: required i32 limit, 5: required i32 offset) throws (1: airavata_errors.InvalidRequestException ire, @@ -352,7 +353,7 @@ service Airavata { * @deprecated * Instead use searchExperimentsByDescWithPagination */ - list<experiment_model.ExperimentSummary> searchExperimentsByDesc (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByDesc (1: required string gatewayId, 2: required string userName, 3: required string description) throws (1: airavata_errors.InvalidRequestException ire, 2: airavata_errors.AiravataClientException ace, @@ -373,7 +374,7 @@ service Airavata { * @param offset * The starting point of the results to be fetched */ - list<experiment_model.ExperimentSummary> searchExperimentsByDescWithPagination (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByDescWithPagination (1: required string gatewayId, 2: required string userName, 3: required string description, 4: required i32 limit, 5: required i32 offset) throws (1: airavata_errors.InvalidRequestException ire, @@ -393,7 +394,7 @@ service Airavata { * @deprecated * Instead use searchExperimentsByApplicationWithPagination */ - list<experiment_model.ExperimentSummary> searchExperimentsByApplication (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByApplication (1: required string gatewayId, 2: required string userName, 3: required string applicationId) throws (1: airavata_errors.InvalidRequestException ire, 2: airavata_errors.AiravataClientException ace, @@ -413,7 +414,7 @@ service Airavata { * @param offset * The starting point of the results to be fetched */ - list<experiment_model.ExperimentSummary> searchExperimentsByApplicationWithPagination (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByApplicationWithPagination (1: required string gatewayId, 2: required string userName, 3: required string applicationId, 4: required i32 limit, 5: required i32 offset) throws (1: airavata_errors.InvalidRequestException ire, @@ -431,8 +432,8 @@ service Airavata { * @deprecated * Instead use searchExperimentsByStatusWithPagination */ - list<experiment_model.ExperimentSummary> searchExperimentsByStatus (1: required string gatewayId, - 2: required string userName, 3: required experiment_model.ExperimentState experimentState) + list<experiment_model.ExperimentSummaryModel> searchExperimentsByStatus (1: required string gatewayId, + 2: required string userName, 3: required status_models.ExperimentState experimentState) throws (1: airavata_errors.InvalidRequestException ire, 2: airavata_errors.AiravataClientException ace, 3: airavata_errors.AiravataSystemException ase) @@ -452,8 +453,8 @@ service Airavata { * @param offset * The starting point of the results to be fetched */ - list<experiment_model.ExperimentSummary> searchExperimentsByStatusWithPagination (1: required string gatewayId, - 2: required string userName, 3: required experiment_model.ExperimentState experimentState, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByStatusWithPagination (1: required string gatewayId, + 2: required string userName, 3: required status_models.ExperimentState experimentState, 4: required i32 limit, 5: required i32 offset) throws (1: airavata_errors.InvalidRequestException ire, 2: airavata_errors.AiravataClientException ace, @@ -473,7 +474,7 @@ service Airavata { * @deprecated * Instead use searchExperimentsByCreationTimeWithPagination */ - list<experiment_model.ExperimentSummary> searchExperimentsByCreationTime (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperimentsByCreationTime (1: required string gatewayId, 2: required string userName, 3: required i64 fromTime, 4: required i64 toTime) throws (1: airavata_errors.InvalidRequestException ire, 2: airavata_errors.AiravataClientException ace, @@ -496,7 +497,7 @@ service Airavata { * @param offset * The starting point of the results to be fetched */ - list<experiment_model.ExperimentSummary> searchExperimentsByCreationTimeWithPagination (1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> 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: airavata_errors.InvalidRequestException ire, @@ -518,7 +519,7 @@ service Airavata { * @param offset * The starting point of the results to be fetched */ - list<experiment_model.ExperimentSummary> searchExperiments(1: required string gatewayId, + list<experiment_model.ExperimentSummaryModel> searchExperiments(1: required string gatewayId, 2: required string userName, 3: map<experiment_model.ExperimentSearchFields, string> filters, 4: required i32 limit, 5: required i32 offset) throws (1: airavata_errors.InvalidRequestException ire, http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-api/airavata_commons.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/airavata_commons.thrift b/thrift-interface-descriptions/airavata-api/airavata_commons.thrift new file mode 100644 index 0000000..e49fe3f --- /dev/null +++ b/thrift-interface-descriptions/airavata-api/airavata_commons.thrift @@ -0,0 +1,54 @@ +/* + * 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.commons +namespace php Airavata.Model.Commons +namespace cpp apache.airavata.model.commons +namespace py apache.airavata.model.commons + +const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS" + +struct ErrorModel { + 1: required string errorId = DEFAULT_ID, + 2: optional i64 creationTime, + 3: optional string actualErrorMessage, + 4: optional string userFriendlyMessage, + 5: optional bool transientOrPersistent = 0, + 6: optional list<string> rootCauseErrorIdList +} + + +/** +* 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 +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index e0849a1..c445ec1 100644 --- a/thrift-interface-descriptions/airavata-api/airavata_errors.thrift +++ b/thrift-interface-descriptions/airavata-api/airavata_errors.thrift @@ -139,21 +139,6 @@ exception AiravataClientException { 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. http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index 4c57009..c7ca231 100644 --- a/thrift-interface-descriptions/airavata-api/application_interface_model.thrift +++ b/thrift-interface-descriptions/airavata-api/application_interface_model.thrift @@ -23,6 +23,7 @@ * to application mapping on various resources. * */ +include "application_io_models.thrift" namespace java org.apache.airavata.model.appcatalog.appinterface namespace php Airavata.Model.AppCatalog.AppInterface @@ -32,97 +33,6 @@ 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: @@ -141,6 +51,6 @@ struct ApplicationInterfaceDescription { 2: required string applicationName, 3: optional string applicationDescription, 4: optional list<string> applicationModules, - 5: optional list<InputDataObjectType> applicationInputs, - 6: optional list<OutputDataObjectType> applicationOutputs + 5: optional list<application_io_models.InputDataObjectType> applicationInputs, + 6: optional list<application_io_models.OutputDataObjectType> applicationOutputs } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-api/application_io_models.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/application_io_models.thrift b/thrift-interface-descriptions/airavata-api/application_io_models.thrift new file mode 100644 index 0000000..4a5b9ef --- /dev/null +++ b/thrift-interface-descriptions/airavata-api/application_io_models.thrift @@ -0,0 +1,118 @@ +/* + * 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.application.io +namespace php Airavata.Model.Application.Io +namespace cpp apache.airavata.model.application.io +namespace py apache.airavata.model.application.io + +/** + * 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 +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index 8896f0d..af577c5 100644 --- a/thrift-interface-descriptions/airavata-api/experiment_model.thrift +++ b/thrift-interface-descriptions/airavata-api/experiment_model.thrift @@ -18,228 +18,19 @@ * */ -include "compute_resource_model.thrift" -include "application_interface_model.thrift" + include "application_io_models.thrift" + include "scheduling_model.thrift" + include "airavata_commons.thrift" + include "status_models.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 + namespace java org.apache.airavata.model.experiment + namespace php Airavata.Model.Experiment + namespace cpp apache.airavata.model.experiment + namespace py apache.airavata.model.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 +enum ExperimentType { + SINGLE_APPLICATION, + WORKFLOW } /** @@ -247,118 +38,17 @@ struct QualityOfServiceParams { * * */ -struct UserConfigurationData { +struct UserConfigurationDataModel { 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, + 4: optional scheduling_model.ComputationalResourceSchedulingModel computationalResourceScheduling, + 5: optional bool throttleResources = 0, + 6: optional string userDN, + 7: optional bool generateCert = 0 } /** - * 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<application_interface_model.InputDataObjectType> applicationInputs, - 7: optional list<application_interface_model.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<application_interface_model.InputDataObjectType> nodeInputs, - 7: optional list<application_interface_model.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: @@ -375,39 +65,34 @@ struct ValidationResults { * 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, +struct ExperimentModel { + 1: required string experimentId = DEFAULT_ID, + 2: required string projectId = DEFAULT_PROJECT_NAME, + 3: required ExperimentType experimentType = ExperimentType.SINGLE_APPLICATION; 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<application_interface_model.InputDataObjectType> experimentInputs, - 17: optional list<application_interface_model.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, + 5: required string experimentName, + 6: optional i64 creationTime, + 7: optional string description, + 8: optional string executionId, + 9: optional string gatewayExecutionId, + 10: optional bool enableEmailNotification, + 11: optional list<string> emailAddresses, + 12: optional UserConfigurationDataModel userConfigurationData, + 13: optional list<application_io_models.InputDataObjectType> experimentInputs, + 14: optional list<application_io_models.OutputDataObjectType> experimentOutputs, + 15: optional status_models.ExperimentStatus experimentStatus, + 16: optional list<airavata_commons.ErrorModel> errors +} + +struct ExperimentSummaryModel { + 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, + 8: optional status_models.ExperimentStatus experimentStatus, } struct ExperimentStatistics { @@ -415,8 +100,8 @@ struct ExperimentStatistics { 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, + 5: required list<ExperimentSummaryModel> allExperiments, + 6: optional list<ExperimentSummaryModel> completedExperiments, + 7: optional list<ExperimentSummaryModel> failedExperiments, + 8: optional list<ExperimentSummaryModel> cancelledExperiments, } http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index 2f23850..3c55e92 100644 --- a/thrift-interface-descriptions/airavata-api/messaging_events.thrift +++ b/thrift-interface-descriptions/airavata-api/messaging_events.thrift @@ -18,8 +18,8 @@ * */ -include "experiment_model.thrift" -include "application_interface_model.thrift" +include "status_models.thrift" +include "application_io_models.thrift" namespace java org.apache.airavata.model.messaging.event namespace php Airavata.Model.Messaging.Event @@ -46,22 +46,11 @@ enum MessageType { } struct ExperimentStatusChangeEvent { - 1: required experiment_model.ExperimentState state; + 1: required status_models.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 experiment_model.WorkflowNodeState state; - 2: required WorkflowIdentifier workflowNodeIdentity; -} - struct TaskIdentifier { 1: required string taskId; 2: required string workflowNodeId; @@ -70,17 +59,17 @@ struct TaskIdentifier { } struct TaskStatusChangeEvent { - 1: required experiment_model.TaskState state; + 1: required status_models.TaskState state; 2: required TaskIdentifier taskIdentity; } struct TaskStatusChangeRequestEvent { - 1: required experiment_model.TaskState state; + 1: required status_models.TaskState state; 2: required TaskIdentifier taskIdentity; } struct TaskOutputChangeEvent { - 1: required list<application_interface_model.OutputDataObjectType> output; + 1: required list<application_io_models.OutputDataObjectType> output; 2: required TaskIdentifier taskIdentity; } @@ -124,12 +113,12 @@ struct TaskTerminateEvent{ } struct JobStatusChangeEvent { - 1: required experiment_model.JobState state; + 1: required status_models.JobState state; 2: required JobIdentifier jobIdentity; } struct JobStatusChangeRequestEvent { - 1: required experiment_model.JobState state; + 1: required status_models.JobState state; 2: required JobIdentifier jobIdentity; } http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-api/process_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/process_model.thrift b/thrift-interface-descriptions/airavata-api/process_model.thrift new file mode 100644 index 0000000..c3f8ba3 --- /dev/null +++ b/thrift-interface-descriptions/airavata-api/process_model.thrift @@ -0,0 +1,56 @@ +/* + * 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 "airavata_commons.thrift" +include "status_models.thrift" +include "task_model.thrift" +include "application_io_models.thrift" +include "scheduling_model.thrift" + +namespace java org.apache.airavata.model.process +namespace php Airavata.Model.Process +namespace cpp apache.airavata.model.process +namespace py apache.airavata.model.process + + +/** + * ProcessModel: A structure holding the process details. The infromation is derived based on user provided + * configuration data or system inferred information from scheduling and QoS parameters. + * + * processDetail: + * A friendly description of the process, usally used to communicate information to users. + * + * +*/ +struct ProcessModel { + 1: required string processId = airavata_commons.DEFAULT_ID, + 2: required string experimentId, + 3: optional i64 creationTime, + 4: optional i64 lastUpdateTime, + 5: optional status_models.ProcessStatus processStatus, + 6: optional string processDetail, + 7: optional string applicationInterfaceId, + 8: optional list<application_io_models.InputDataObjectType> processInputs, + 9: optional list<application_io_models.OutputDataObjectType> processOutputs, + 10: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule, + 11: optional list<task_model.TaskModel> tasks, + 12: optional string taskDag, + 13: optional airavata_commons.ErrorModel processError +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-api/scheduling_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/scheduling_model.thrift b/thrift-interface-descriptions/airavata-api/scheduling_model.thrift new file mode 100644 index 0000000..59c6abd --- /dev/null +++ b/thrift-interface-descriptions/airavata-api/scheduling_model.thrift @@ -0,0 +1,39 @@ +/* + * 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.scheduling +namespace php Airavata.Model.Scheduling +namespace cpp apache.airavata.model.scheduling +namespace py apache.airavata.model.scheduling + +/** + * ComputationalResourceSchedulingModel: + * + * +*/ +struct ComputationalResourceSchedulingModel { + 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 totalPhysicalMemory, +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-api/status_models.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/status_models.thrift b/thrift-interface-descriptions/airavata-api/status_models.thrift new file mode 100644 index 0000000..d361f95 --- /dev/null +++ b/thrift-interface-descriptions/airavata-api/status_models.thrift @@ -0,0 +1,102 @@ +/* + * 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.status +namespace php Airavata.Model.Status +namespace cpp apache.airavata.model.status +namespace py apache.airavata.model.status + +enum ExperimentState { + CREATED, + VALIDATED, + SCHEDULED, + LAUNCHED, + EXECUTING, + CANCELING, + CANCELED, + COMPLETED, + FAILED +} + +enum TaskState { + CREATED, + EXECUTING, + COMPLETED, + FAILED, + CANCELED +} + +enum ProcessState { + CREATED, + VALIDATED, + EXECUTING, + COMPLETED, + FAILED, + CANCELLING, + CANCELED +} + +enum JobState { + SUBMITTED, + QUEUED, + ACTIVE, + COMPLETE, + CANCELED, + FAILED, + SUSPENDED, + UNKNOWN +} + +/** + * Status: A generic status object. + * + * state: + * State . + * + * timeOfStateChange: + * time the status was last updated. + * + * reason: + * User friendly reason on how the state is inferred. + * +*/ +struct ExperimentStatus { + 1: required ExperimentState state, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} + +struct ProcessStatus { + 1: required ProcessState state, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} + +struct TaskStatus { + 1: required TaskState state, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} + +struct JobStatus { + 1: required JobState jobState, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-api/task_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/task_model.thrift b/thrift-interface-descriptions/airavata-api/task_model.thrift new file mode 100644 index 0000000..43f89e9 --- /dev/null +++ b/thrift-interface-descriptions/airavata-api/task_model.thrift @@ -0,0 +1,75 @@ +/* + * 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 "airavata_commons.thrift" +include "status_models.thrift" + +namespace java org.apache.airavata.model.task +namespace php Airavata.Model.Task +namespace cpp apache.airavata.model.task +namespace py apache.airavata.model.task + +/** + * TaskTypes: An enumerated list of TaskTypes. Task being generic, the task type will provide the concrete interpretation. + * +*/ +enum TaskTypes { + ENV_SETUP, + DATA_STAGING, + JOB_SUBMISSION, + ENV_CLEANUP, + MONITORING +} + +/** + * TaskModel: A structure holding the generic task details. + * + * taskDetail: + * A friendly description of the task, usally used to communicate information to users. + * + * taskInternalStore: + * A generic byte object for the Task developer to store internal serialized data into registry catalogs. +*/ +struct TaskModel { + 1: required string taskId = airavata_commons.DEFAULT_ID, + 2: required TaskTypes taskType, + 3: required string parentProcessId, + 4: required i64 creationTime, + 5: required i64 lastUpdateTime, + 6: required status_models.TaskStatus taskStatus, + 7: optional string taskDetail, + 8: optional byte taskInternalStore, + 9: optional airavata_commons.ErrorModel taskError +} + +/** + * DataStagingTaskModel: A structure holding the data staging task details. + * + * Source and Destination locations includes standard representation of protocol, host, port and path + * A friendly description of the task, usally used to communicate information to users. + * +*/ +struct DataStagingTaskModel { + 1: required string source, + 2: required string destination, + 3: optional i64 transferStartTime, + 4: optional i64 transferEndTime, + 5: optional string transferRate +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index 920aef3..e35a951 100644 --- a/thrift-interface-descriptions/airavata-api/workflow_data_model.thrift +++ b/thrift-interface-descriptions/airavata-api/workflow_data_model.thrift @@ -23,7 +23,7 @@ namespace java org.apache.airavata.model namespace php Airavata.Model namespace py apache.airavata.model.workflow -include "application_interface_model.thrift" +include "application_io_models.thrift" /* * This file describes the definitions of the Airavata Execution Data Structures. Each of the @@ -38,6 +38,6 @@ struct Workflow { 2: required string name, 3: optional string graph, 4: optional binary image, - 5: optional list<application_interface_model.InputDataObjectType> workflowInputs, - 6: optional list<application_interface_model.OutputDataObjectType> workflowOutputs + 5: optional list<application_io_models.InputDataObjectType> workflowInputs, + 6: optional list<application_io_models.OutputDataObjectType> workflowOutputs } http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/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 index 46ed1c6..9ccd6e5 100644 --- a/thrift-interface-descriptions/airavata-api/workspace_model.thrift +++ b/thrift-interface-descriptions/airavata-api/workspace_model.thrift @@ -18,8 +18,6 @@ * */ -include "experiment_model.thrift" - namespace java org.apache.airavata.model.workspace namespace php Airavata.Model.Workspace namespace cpp apache.airavata.model.workspace @@ -41,7 +39,7 @@ struct Group { } struct Project { - 1: required string projectID = experiment_model.DEFAULT_PROJECT_NAME, + 1: required string projectID, 2: required string owner, 3: required string name, 4: optional string description http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-data-models/airavata_commons.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/airavata_commons.thrift b/thrift-interface-descriptions/airavata-data-models/airavata_commons.thrift index 90a4132..e49fe3f 100644 --- a/thrift-interface-descriptions/airavata-data-models/airavata_commons.thrift +++ b/thrift-interface-descriptions/airavata-data-models/airavata_commons.thrift @@ -25,11 +25,30 @@ namespace py apache.airavata.model.commons const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS" -struct ErrorDetails { - 1: required string errorID = DEFAULT_ID, +struct ErrorModel { + 1: required string errorId = DEFAULT_ID, 2: optional i64 creationTime, 3: optional string actualErrorMessage, 4: optional string userFriendlyMessage, 5: optional bool transientOrPersistent = 0, 6: optional list<string> rootCauseErrorIdList +} + + +/** +* 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 } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-data-models/experiment_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/experiment_model.thrift b/thrift-interface-descriptions/airavata-data-models/experiment_model.thrift new file mode 100644 index 0000000..6cf0e75 --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/experiment_model.thrift @@ -0,0 +1,105 @@ +/* + * 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 "application_io_models.thrift" + include "scheduling_model.thrift" + include "airavata_commons.thrift" + include "status_models.thrift" + + namespace java org.apache.airavata.model.experiment + namespace php Airavata.Model.Experiment + namespace cpp apache.airavata.model.experiment + namespace py apache.airavata.model.experiment + +enum ExperimentType { + SINGLE_APPLICATION, + WORKFLOW +} + +enum ExperimentSearchFields { + EXPERIMENT_NAME, + EXPERIMENT_DESC, + APPLICATION_ID, + FROM_DATE, + TO_DATE, + STATUS +} +/** + * A structure holding the experiment configuration. + * + * +*/ +struct UserConfigurationDataModel { + 1: required bool airavataAutoSchedule = 0, + 2: required bool overrideManualScheduledParams = 0, + 3: optional bool shareExperimentPublicly = 0, + 4: optional scheduling_model.ComputationalResourceSchedulingModel computationalResourceScheduling, + 5: optional bool throttleResources = 0, + 6: optional string userDN, + 7: optional bool generateCert = 0 +} + +/** + * 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 ExperimentModel { + 1: required string experimentId = DEFAULT_ID, + 2: required string projectId = DEFAULT_PROJECT_NAME, + 3: required ExperimentType experimentType = ExperimentType.SINGLE_APPLICATION; + 4: required string userName, + 5: required string experimentName, + 6: optional i64 creationTime, + 7: optional string description, + 8: optional string executionId, + 9: optional string gatewayExecutionId, + 10: optional bool enableEmailNotification, + 11: optional list<string> emailAddresses, + 12: optional UserConfigurationDataModel userConfigurationData, + 13: optional list<application_io_models.InputDataObjectType> experimentInputs, + 14: optional list<application_io_models.OutputDataObjectType> experimentOutputs, + 15: optional status_models.ExperimentStatus experimentStatus, + 16: optional list<airavata_commons.ErrorModel> errors +} + +struct ExperimentSummaryModel { + 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 status_models.ExperimentStatus experimentStatus, +} + http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-data-models/process_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/process_model.thrift b/thrift-interface-descriptions/airavata-data-models/process_model.thrift index a0051f8..c3f8ba3 100644 --- a/thrift-interface-descriptions/airavata-data-models/process_model.thrift +++ b/thrift-interface-descriptions/airavata-data-models/process_model.thrift @@ -41,15 +41,16 @@ namespace py apache.airavata.model.process */ struct ProcessModel { 1: required string processId = airavata_commons.DEFAULT_ID, - 2: optional i64 creationTime, - 3: optional i64 lastUpdateTime, - 4: optional status_models.Status processStatus, - 5: optional string processDetail, - 6: optional string applicationInterfaceId, - 7: optional list<application_io_models.InputDataObjectType> processInputs, - 8: optional list<application_io_models.OutputDataObjectType> processOutputs, - 9: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule, - 10: optional list<task_model.TaskModel> tasks, - 11: optional string taskDag, - 12: optional airavata_commons.ErrorDetails processErrorDetails + 2: required string experimentId, + 3: optional i64 creationTime, + 4: optional i64 lastUpdateTime, + 5: optional status_models.ProcessStatus processStatus, + 6: optional string processDetail, + 7: optional string applicationInterfaceId, + 8: optional list<application_io_models.InputDataObjectType> processInputs, + 9: optional list<application_io_models.OutputDataObjectType> processOutputs, + 10: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule, + 11: optional list<task_model.TaskModel> tasks, + 12: optional string taskDag, + 13: optional airavata_commons.ErrorModel processError } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-data-models/status_models.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/status_models.thrift b/thrift-interface-descriptions/airavata-data-models/status_models.thrift index 458135c..d361f95 100644 --- a/thrift-interface-descriptions/airavata-data-models/status_models.thrift +++ b/thrift-interface-descriptions/airavata-data-models/status_models.thrift @@ -23,7 +23,7 @@ namespace php Airavata.Model.Status namespace cpp apache.airavata.model.status namespace py apache.airavata.model.status -enum State { +enum ExperimentState { CREATED, VALIDATED, SCHEDULED, @@ -31,11 +31,39 @@ enum State { EXECUTING, CANCELING, CANCELED, - SUSPENDED, COMPLETED, FAILED } +enum TaskState { + CREATED, + EXECUTING, + COMPLETED, + FAILED, + CANCELED +} + +enum ProcessState { + CREATED, + VALIDATED, + EXECUTING, + COMPLETED, + FAILED, + CANCELLING, + CANCELED +} + +enum JobState { + SUBMITTED, + QUEUED, + ACTIVE, + COMPLETE, + CANCELED, + FAILED, + SUSPENDED, + UNKNOWN +} + /** * Status: A generic status object. * @@ -49,8 +77,26 @@ enum State { * User friendly reason on how the state is inferred. * */ -struct Status { - 1: required State state, +struct ExperimentStatus { + 1: required ExperimentState state, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} + +struct ProcessStatus { + 1: required ProcessState state, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} + +struct TaskStatus { + 1: required TaskState state, + 2: optional i64 timeOfStateChange, + 3: optional string reason +} + +struct JobStatus { + 1: required JobState jobState, 2: optional i64 timeOfStateChange, - 3: string reason + 3: optional string reason } http://git-wip-us.apache.org/repos/asf/airavata/blob/e76851d0/thrift-interface-descriptions/airavata-data-models/task_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/task_model.thrift b/thrift-interface-descriptions/airavata-data-models/task_model.thrift index ee82c74..43f89e9 100644 --- a/thrift-interface-descriptions/airavata-data-models/task_model.thrift +++ b/thrift-interface-descriptions/airavata-data-models/task_model.thrift @@ -53,10 +53,10 @@ struct TaskModel { 3: required string parentProcessId, 4: required i64 creationTime, 5: required i64 lastUpdateTime, - 6: required status_models.Status taskStatus, + 6: required status_models.TaskStatus taskStatus, 7: optional string taskDetail, 8: optional byte taskInternalStore, - 9: optional airavata_commons.ErrorDetails taskErrorDetails + 9: optional airavata_commons.ErrorModel taskError } /**
