Updated Branches: refs/heads/master f52dc3b71 -> e7849ef98
Updating experiment models to address the data management needs discused in AIRAVATA-1017 Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e7849ef9 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e7849ef9 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e7849ef9 Branch: refs/heads/master Commit: e7849ef980bb49f3129bf972265e258fd10056ea Parents: f52dc3b Author: Suresh Marru <[email protected]> Authored: Fri Feb 14 08:22:16 2014 -0500 Committer: Suresh Marru <[email protected]> Committed: Fri Feb 14 08:22:16 2014 -0500 ---------------------------------------------------------------------- .../airavataAPI.thrift | 1 - .../experimentModel.thrift | 284 +++++++++++++------ .../monitoringModel.thrift | 124 -------- 3 files changed, 204 insertions(+), 205 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/e7849ef9/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 index 402b3e2..1ea10a3 100644 --- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift +++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift @@ -27,7 +27,6 @@ include "airavataErrors.thrift" include "airavataDataModel.thrift" include "experimentModel.thrift" -include "monitoringModel.thrift" namespace java org.apache.airavata.api namespace php Airavata.API http://git-wip-us.apache.org/repos/asf/airavata/blob/e7849ef9/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 index 109b50a..808e488 100644 --- a/airavata-api/thrift-interface-descriptions/experimentModel.thrift +++ b/airavata-api/thrift-interface-descriptions/experimentModel.thrift @@ -49,29 +49,97 @@ namespace php Airavata.Model.Experiment * */ +enum ExperimentStatus { + CREATED, + VALIDATED, + SCHEDULED, + LAUNCHED, + EXECUTING, + CANCELED, + COMPLETED, + FAILED, + UNKNOWN +} + +enum WorkflowNodeStatus { + INVOKED, + EXECUTING, + CANCELED, + COMPLETED, + FAILED, + UNKNOWN +} + +enum ExecutionStatus { + AUTHENTICATED, + PRE_PROCESSING, + CONFIGURING_WORKSPACE, + INPUT_DATA_STAGING, + OUTPUT_DATA_STAGING, + POST_PROCESSING, + CANCELED, + COMPLETED, + FAILED, + UNKNOWN +} + +enum JobStatus { + SUBMITTED, + QUEUED, + ACTIVE, + COMPLETE, + CANCELED, + FAILED, + HELD, + SUSPENDED, + UNKNOWN +} + +enum TransferStatus { + SUBMITTED, + QUEUED, + ACTIVE, + COMPLETE, + CANCELED, + FAILED, + HELD, + SUSPENDED, + UNKNOWN +} + +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 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. +* A structure hold experiment input output +* */ -struct BasicMetadata { - 1: required string userName, - 2: required string experimentName, - 3: required string projectID = "default", - 4: optional string experimentDescription, - 5: optional bool shareExperimentPublicly = 0, - 6: required string experimentID = "DO_NOT_SET" +struct DataObjectType { + 1: required string key, + 2: optional string type, + 3: optional string value } /** @@ -79,17 +147,15 @@ struct BasicMetadata { * */ 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 + 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 } /** @@ -97,8 +163,8 @@ struct ComputationalResourceScheduling { * */ struct AdvancedInputDataHandling { - 1:optional bool stageInputFilesToWorkingDir = 0, - 2: optional string workingDirectoryParent, + 1: optional bool stageInputFilesToWorkingDir = 0, + 2: optional string parentWorkingDirectory, 3: optional string uniqueWorkingDirectory, 4: optional bool cleanUpWorkingDirAfterJob = 0 } @@ -108,9 +174,9 @@ struct AdvancedInputDataHandling { * */ struct AdvancedOutputDataHandling { - 2:optional string outputdataDir, - 3:optional string dataRegistryURL, - 4:optional bool persistOutputData = 1 + 2: optional string outputDataDir, + 3: optional string dataRegistryURL, + 4: optional bool persistOutputData = 1 } /** @@ -118,9 +184,9 @@ struct AdvancedOutputDataHandling { * */ struct QualityOfServiceParams { - 1:optional string startExecutionAt, - 2:optional string executeBefore, - 3:optional i32 numberofRetries, + 1: optional string startExecutionAt, + 2: optional string executeBefore, + 3: optional i32 numberofRetries } /** @@ -128,55 +194,113 @@ struct QualityOfServiceParams { * * */ -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 +struct UserConfigurationData { + 1: required bool airavataAutoSchedule = 0, + 2: required bool overrideManualScheduledParams = 0, + 3: optional bool shareExperimentPublicly = 0, + 4: optional ComputationalResourceScheduling computationalResourceScheduling, + 5: optional AdvancedInputDataHandling advanceInputDataHandling, + 6: optional AdvancedOutputDataHandling advanceOutputDataHandling, + 7: optional QualityOfServiceParams qosParams +} + +struct ErrorDetails { + 1: optional string actualErrorMessage, + 2: optional bool transientOrPersistant = 0, + 3: optional CorrectiveAction correctiveAction, + 4: optional ActionableGroup actionableGroup, + 5: optional string userFriendlyMessage, + 6: optional ErrorCategory errorCategory +} + +struct JobDetails { + 1: required string jobID, + 2: required string jobDescription, + 3: optional JobStatus jobStatus, + 4: optional i64 lastUpdateTime, + 5: optional string applicationStatus, + 6: optional i64 applicationLastUpdateTime, + 7: optional list<ErrorDetails> errors +} + +struct DataTransferDetails { + 1: required string transferID, + 2: required string transferDescription, + 3: optional TransferStatus transferStatus, + 4: optional i64 lastUpdateTime } /** -* A structure holding the node data. -* nodeInstanceId - unique node identifier for each run -* executionIndex - auto incrementing index for each run. -* nodeType - type of the node, whether it is an input node, output node or service node + * A structure holding the actual execution context decided based on user provided configuration data or system inferred + * information from scheduling and QoS parameters . + * */ -struct NodeData { - 1: required string nodeName, - 2: required string nodeInstanceId = "DO_NOT_SET", - 3: required string executionIndex, - 4: optional string nodeType, - 5: optional string nodeInput, - 6: optional string nodeOutput, - 7: optional string nodeStatus, - 8: optional int32 startTime, - 9: optional int32 lastUpdateTime +struct AiravataExecutionDetails { + 1: required string executionID + 2: optional string applicationId, + 3: optional string applicationVersion, + 4: optional list<DataObjectType> applicationInputs, + 5: optional list<DataObjectType> applicationOoutputs, + 6: optional ComputationalResourceScheduling executionScheduling, + 7: optional AdvancedInputDataHandling advancedInputDataHandling, + 8: optional AdvancedOutputDataHandling advancedOutputDataHandling, + 9: optional i64 creationTime, + 10: optional ExecutionStatus executionStatus, + 11: optional i64 lastUpdateTime, + 12: optional list<JobDetails> jobDetailsList, + 13: optional list<DataTransferDetails> dataTransferDetailsList, + 14: optional list<ErrorDetails> errors } /** -* A structure to hold experiment output -* +* A structure holding the node data. +* nodeInstanceId - unique node identifier for each run */ -struct ExperimentOutput { - 1: required string outputKey, - 2: optional string outputType, - 3: optional string outputkeyValue +struct WorkflowNodeDetails { + 1: required string nodeInstanceId = "DO_NOT_SET", + 2: required string nodeName = "SIMPLE_APP_NODE", + 3: optional list<DataObjectType> nodeInputs, + 4: optional list<DataObjectType> nodeOutputs, + 5: optional i64 startTime, + 6: optional WorkflowNodeStatus workflowNodeStatus, + 7: optional i64 lastUpdateTime, + 8: optional list<AiravataExecutionDetails> executionDetailsList + 9: optional list<ErrorDetails> errors } /** -* A structure to hold generated data -* + * 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 GeneratedData { - 1: required string workflowTemplateId, - 2: optional string workflowTemplateName, - 3: optional int32 startTime, - 4: optional list<ExperimentOutput> experimentOutputs, - 5: optional list<NodeData> nodes -} + +struct Experiment { + 1: required string experimentID = "DO_NOT_SET" + 2: required string projectID = "DEFAULT", + 3: optional i64 creationTime, + 4: required string userName, + 5: required string experimentName, + 6: optional string experimentDescription, + 7: optional string applicationId, + 8: optional string applicationVersion, + 9: optional string workflowTemplateId, + 10: optional string workflowTemplateVersion, + 11: optional string workflowExecutionInstanceId, + 12: optional list<DataObjectType> experimentInputs, + 13: optional list<DataObjectType> experimentOutputs, + 14: optional ExecutionStatus experimentStatus, + 15: optional i64 lastUpdateTime, + 16: optional list<WorkflowNodeDetails> workflowNodeDetailsList, + 17: optional list<ErrorDetails> errors +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e7849ef9/airavata-api/thrift-interface-descriptions/monitoringModel.thrift ---------------------------------------------------------------------- diff --git a/airavata-api/thrift-interface-descriptions/monitoringModel.thrift b/airavata-api/thrift-interface-descriptions/monitoringModel.thrift deleted file mode 100644 index a41b15e..0000000 --- a/airavata-api/thrift-interface-descriptions/monitoringModel.thrift +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -namespace java org.apache.airavata.model.monitoring -namespace php Airavata.Model.Monitoring - -/** - * Experiment Monitoring Data is a structure contains fine grained experiment status information. -*/ - -/** -* To communicate date in ISO 8601 format like YYYY-MM-DD hh:mm:ss or YYYY-MM-DD -*/ -typedef string TimeStamp - -/** -* Enumeration for the job monitoring status. -*/ -enum STATUS { - CREATED, - SUBMITTED, - AUTHENTICATE, - CONFIGURING_WORKSPACE, - INPUT_TRANSFER, - OUTPUT_TRANSFER, - QUEUED, - PENDING, - ACTIVE, - COMPLETE, - CANCELED, - FINISHED, - FAILED, - UNKNOWN -} -/** -* Application runtime details -*/ -struct ApplicationDetails { - 1: optional string name, - 2: optional string instanceid, - 3: optional string status, - 4: optional string currentAction, - 5: optional string apperror -} - - /** - * A structure holding the experiment monitoring request. - * - * expeimentID: - * Unique id returned by airavata on experiment creation. - * - * userName: - * User of an experiment. This can be used to get all experiment triggered by user - * - * filter: - * This is to filter the output results. Filter can be failed, canceled, running, aborted and all. - * - * To get data for certain date range, provide a date range for the experiment run - * startDateTime: - * Start criteria for a date range - * endDateTime: - * End criteria for a date range - * - */ -struct MonitoringRequest { - 1: optional string experimentID, - 2: optional string userName, - 3: optional string filter = "all", - 4: optional i64 startDateTime, - 5: optional i64 endDateTime, - 6: optional bool applicationdetails = false -} - - /** - * A structure holding the experiment monitoring response. - * - * expeimentID: - * Unique id returned by airavata on experiment creation. - * - * userName: - * User of an experiment. - * - * experimentStatus: - * Experiment status for a experiment run. - * - * startTime: - * Experiment start datetime in ISO 8601 format. - * - * endTime: - * Experiment end datetime in ISO 8601 format. - * - * errormessage: - * If the experiment status is failed then this will return the reason of error. - * - * appdetails - * Application details are specific to applications executed in this experiment. - */ - -struct MonitoringResponse { - 1: required string experimentID, - 2: required string userName, - 3: required STATUS experimentStatus, - 4: optional TimeStamp startTime, - 5: optional TimeStamp endTime, - 6: optional string errormessage, - 7: optional list <ApplicationDetails> appdetails -} \ No newline at end of file
