You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2015/06/12 14:57:04 UTC

airavata git commit: Simplifying data models in preparation for a stable 1.0 release - AIRAVATA-1014

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 <sm...@apache.org>
Authored: Fri Jun 12 08:56:55 2015 -0400
Committer: Suresh Marru <sm...@apache.org>
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