Repository: airavata Updated Branches: refs/heads/master 5a6b64703 -> 95007241e
Simplifying data models in preparation for a stable 1.0 release - AIRAVATA-1014 Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/95007241 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/95007241 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/95007241 Branch: refs/heads/master Commit: 95007241eb7e93075df7e4b1f1110334da39deab Parents: 5a6b647 Author: Suresh Marru <[email protected]> Authored: Fri Jun 12 08:56:55 2015 -0400 Committer: Suresh Marru <[email protected]> Committed: Fri Jun 12 08:56:55 2015 -0400 ---------------------------------------------------------------------- .../airavata_commons.thrift | 35 ++++++ .../application_io_models.thrift | 118 +++++++++++++++++++ .../airavata-data-models/process_model.thrift | 54 +++++++++ .../scheduling_model.thrift | 39 ++++++ .../airavata-data-models/status_models.thrift | 56 +++++++++ .../airavata-data-models/task_model.thrift | 75 ++++++++++++ 6 files changed, 377 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/95007241/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 new file mode 100644 index 0000000..90a4132 --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/airavata_commons.thrift @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +namespace java org.apache.airavata.model.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 ErrorDetails { + 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 +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/95007241/thrift-interface-descriptions/airavata-data-models/application_io_models.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/application_io_models.thrift b/thrift-interface-descriptions/airavata-data-models/application_io_models.thrift new file mode 100644 index 0000000..4a5b9ef --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/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/95007241/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 new file mode 100644 index 0000000..974906c --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/process_model.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. + * + */ + +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: optional i64 creationTime, + 3: optional i64 lastUpdateTime, + 4: optional status_models.Status processStatus, + 5: optional string processDetail, + 6: optional list<application_io_models.InputDataObjectType> processInputs, + 7: optional list<application_io_models.OutputDataObjectType> processOutputs, + 8: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule, + 9: optional list<task_model.TaskModel> tasks, + 10: optional string taskDag + 11: optional airavata_commons.ErrorDetails processErrorDetails +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/95007241/thrift-interface-descriptions/airavata-data-models/scheduling_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-data-models/scheduling_model.thrift b/thrift-interface-descriptions/airavata-data-models/scheduling_model.thrift new file mode 100644 index 0000000..59c6abd --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/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/95007241/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 new file mode 100644 index 0000000..458135c --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/status_models.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. + * + */ + +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 State { + CREATED, + VALIDATED, + SCHEDULED, + LAUNCHED, + EXECUTING, + CANCELING, + CANCELED, + SUSPENDED, + COMPLETED, + FAILED +} + +/** + * 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 Status { + 1: required State state, + 2: optional i64 timeOfStateChange, + 3: string reason +} http://git-wip-us.apache.org/repos/asf/airavata/blob/95007241/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 new file mode 100644 index 0000000..ee82c74 --- /dev/null +++ b/thrift-interface-descriptions/airavata-data-models/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.Status taskStatus, + 7: optional string taskDetail, + 8: optional byte taskInternalStore, + 9: optional airavata_commons.ErrorDetails taskErrorDetails +} + +/** + * 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
