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
 }
 
 /**

Reply via email to