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/11 18:48:23 UTC

[1/6] airavata git commit: Replaced hyphens with underscores for thrift file names

Repository: airavata
Updated Branches:
  refs/heads/master f742ebde1 -> 068c18b97


http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/gateway_resource_profile_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/gateway_resource_profile_model.thrift b/thrift-interface-descriptions/airavata-api/gateway_resource_profile_model.thrift
new file mode 100644
index 0000000..c3fa905
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/gateway_resource_profile_model.thrift
@@ -0,0 +1,83 @@
+/*
+ * 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.appcatalog.gatewayprofile
+namespace php Airavata.Model.AppCatalog.GatewayProfile
+namespace cpp apache.airavata.model.appcatalog.gatewayprofile
+namespace py apache.airavata.model.appcatalog.gatewayprofile
+
+include "compute_resource_model.thrift"
+
+/**
+ * Gateway specific preferences for a Computer Resource
+ *
+ * computeResourceId:
+ *   Corelate the preference to a compute resource.
+ *
+ * overridebyAiravata:
+ *   If turned true, Airavata will override the preferences of better alternatives exist.
+ *
+ * loginUserName:
+ *   If turned true, Airavata will override the preferences of better alternatives exist.
+ *
+ * preferredJobSubmissionProtocol:
+ *   For resources with multiple job submission protocols, the gateway can pick a preferred option.
+ *
+ * preferredDataMovementProtocol:
+ *   For resources with multiple data movement protocols, the gateway can pick a preferred option.
+ *
+ * preferredBatchQueue:
+ *  Gateways can choose a defualt batch queue based on average job dimention, reservations or other metrics.
+ *
+ * scratchLocation:
+ *  Path to the local scratch space on a HPC cluster. Typically used to create working directory for job execution.
+ *
+ * allocationProjectNumber:
+ *  Typically used on HPC machines to charge computing usage to a account number. For instance, on XSEDE once an
+ *    allocation is approved, an allocation number is assigned. Before passing this number with job submittions, the
+ *    account to be used has to be added to the allocation.
+ *
+*/
+struct ComputeResourcePreference {
+    1: required string computeResourceId,
+    2: required bool overridebyAiravata = 1,
+    3: optional string loginUserName,
+    4: optional compute_resource_model.JobSubmissionProtocol preferredJobSubmissionProtocol,
+    5: optional compute_resource_model.DataMovementProtocol preferredDataMovementProtocol,
+    6: optional string preferredBatchQueue,
+    7: optional string scratchLocation,
+    8: optional string allocationProjectNumber
+}
+
+/**
+ * Gateway Resource Profile
+ *
+ * gatewayID:
+ *   Unique identifier for the gateway assigned by Airavata. Corelate this to Airavata Admin API Gateway Registration.
+ *
+ * computeResourcePreferences:
+ *  List of resource preferences for each of the registered compute resources.
+ *
+ *
+*/
+struct GatewayResourceProfile {
+    1: required string gatewayID,
+    2: optional list<ComputeResourcePreference> computeResourcePreferences
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index 45de9ec..0000000
--- a/thrift-interface-descriptions/airavata-api/messaging-events.thrift
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-include "experiment-model.thrift"
-include "application-interface-model.thrift"
-
-namespace java org.apache.airavata.model.messaging.event
-namespace php Airavata.Model.Messaging.Event
-namespace cpp apache.airavata.model.messaging.event
-namespace py apache.airavata.model.messaging.event
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-enum MessageLevel {
-    INFO,
-    DEBUG,
-    ERROR,
-    ACK
-}
-
-enum MessageType {
-    EXPERIMENT,
-    TASK,
-    WORKFLOWNODE,
-    JOB,
-    LAUNCHTASK,
-    TERMINATETASK,
-    TASKOUTPUT
-}
-
-struct ExperimentStatusChangeEvent {
-    1: required experimentModel.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 experimentModel.WorkflowNodeState state;
-    2: required WorkflowIdentifier workflowNodeIdentity;
-}
-
-struct TaskIdentifier {
-    1: required string taskId;
-    2: required string workflowNodeId;
-    3: required string experimentId;
-    4: required string gatewayId;
-}
-
-struct TaskStatusChangeEvent {
-    1: required experimentModel.TaskState state;
-    2: required TaskIdentifier  taskIdentity;
-}
-
-struct TaskStatusChangeRequestEvent {
-    1: required experimentModel.TaskState state;
-    2: required TaskIdentifier taskIdentity;
-}
-
-struct TaskOutputChangeEvent {
-    1: required list<applicationInterfaceModel.OutputDataObjectType> output;
-    2: required TaskIdentifier taskIdentity;
-}
-
-struct JobIdentifier {
-    1: required string jobId;
-    2: required string taskId;
-    3: required string workflowNodeId;
-    4: required string experimentId;
-    5: required string gatewayId;
-}
-
-//struct JobMonitor {
-//    1: optional string username;
-//    2: optional i64 jobStartedTime;
-//    3: optional i64 lastMonitoredTime;
-//    4: optional string hostId;
-//    5: optional map<string, string> parameters;
-//    6: optional string jobName;
-//    7: optional i32 failedCount = 0;
-//    // FIXME - Job execution context
-//    //8:
-// }
-
-struct ProcessSubmitEvent{
-    1: required string taskId;
-    2: required string credentialToken;
-}
-
-struct TaskSubmitEvent{
-    1: required string experimentId,
-    2: required string taskId,
-    3: required string gatewayId,
-    4: required string tokenId
-}
-
-struct TaskTerminateEvent{
-    1: required string experimentId,
-    2: required string taskId,
-    3: required string gatewayId,
-    4: required string tokenId
-}
-
-struct JobStatusChangeEvent {
-    1: required experimentModel.JobState state;
-    2: required JobIdentifier jobIdentity;
-}
-
-struct JobStatusChangeRequestEvent {
-    1: required experimentModel.JobState state;
-    2: required JobIdentifier jobIdentity;
-}
-
-struct Message {
-    1: required binary event;
-    2: required string messageId = DEFAULT_ID;
-    3: required MessageType messageType;
-    4: optional i64 updatedTime;
-    5: optional MessageLevel messageLevel;
-}
-
-
-
-
-
-
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..2f23850
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/messaging_events.thrift
@@ -0,0 +1,149 @@
+/*
+ * 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 "experiment_model.thrift"
+include "application_interface_model.thrift"
+
+namespace java org.apache.airavata.model.messaging.event
+namespace php Airavata.Model.Messaging.Event
+namespace cpp apache.airavata.model.messaging.event
+namespace py apache.airavata.model.messaging.event
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+enum MessageLevel {
+    INFO,
+    DEBUG,
+    ERROR,
+    ACK
+}
+
+enum MessageType {
+    EXPERIMENT,
+    TASK,
+    WORKFLOWNODE,
+    JOB,
+    LAUNCHTASK,
+    TERMINATETASK,
+    TASKOUTPUT
+}
+
+struct ExperimentStatusChangeEvent {
+    1: required experiment_model.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;
+    3: required string experimentId;
+    4: required string gatewayId;
+}
+
+struct TaskStatusChangeEvent {
+    1: required experiment_model.TaskState state;
+    2: required TaskIdentifier  taskIdentity;
+}
+
+struct TaskStatusChangeRequestEvent {
+    1: required experiment_model.TaskState state;
+    2: required TaskIdentifier taskIdentity;
+}
+
+struct TaskOutputChangeEvent {
+    1: required list<application_interface_model.OutputDataObjectType> output;
+    2: required TaskIdentifier taskIdentity;
+}
+
+struct JobIdentifier {
+    1: required string jobId;
+    2: required string taskId;
+    3: required string workflowNodeId;
+    4: required string experimentId;
+    5: required string gatewayId;
+}
+
+//struct JobMonitor {
+//    1: optional string username;
+//    2: optional i64 jobStartedTime;
+//    3: optional i64 lastMonitoredTime;
+//    4: optional string hostId;
+//    5: optional map<string, string> parameters;
+//    6: optional string jobName;
+//    7: optional i32 failedCount = 0;
+//    // FIXME - Job execution context
+//    //8:
+// }
+
+struct ProcessSubmitEvent{
+    1: required string taskId;
+    2: required string credentialToken;
+}
+
+struct TaskSubmitEvent{
+    1: required string experimentId,
+    2: required string taskId,
+    3: required string gatewayId,
+    4: required string tokenId
+}
+
+struct TaskTerminateEvent{
+    1: required string experimentId,
+    2: required string taskId,
+    3: required string gatewayId,
+    4: required string tokenId
+}
+
+struct JobStatusChangeEvent {
+    1: required experiment_model.JobState state;
+    2: required JobIdentifier jobIdentity;
+}
+
+struct JobStatusChangeRequestEvent {
+    1: required experiment_model.JobState state;
+    2: required JobIdentifier jobIdentity;
+}
+
+struct Message {
+    1: required binary event;
+    2: required string messageId = DEFAULT_ID;
+    3: required MessageType messageType;
+    4: optional i64 updatedTime;
+    5: optional MessageLevel messageLevel;
+}
+
+
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/security-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/security-model.thrift b/thrift-interface-descriptions/airavata-api/security-model.thrift
deleted file mode 100644
index bda9554..0000000
--- a/thrift-interface-descriptions/airavata-api/security-model.thrift
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-namespace java org.apache.airavata.model.security
-namespace php Airavata.Model.Security
-namespace cpp apache.airavata.model.security
-namespace py apache.airavata.model.security
-
-/*
- * This file describes the definitions of the security model which encapsulates the information that needs to be passed
-  to the API methods in order to authenticate and authorize the users.
- *
-*/
-
-struct AuthzToken {
-    1: required string accessToken,
-    2: optional map<string, string> claimsMap
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/security_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/security_model.thrift b/thrift-interface-descriptions/airavata-api/security_model.thrift
new file mode 100644
index 0000000..bda9554
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/security_model.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.security
+namespace php Airavata.Model.Security
+namespace cpp apache.airavata.model.security
+namespace py apache.airavata.model.security
+
+/*
+ * This file describes the definitions of the security model which encapsulates the information that needs to be passed
+  to the API methods in order to authenticate and authorize the users.
+ *
+*/
+
+struct AuthzToken {
+    1: required string accessToken,
+    2: optional map<string, string> claimsMap
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/workflow-api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/workflow-api.thrift b/thrift-interface-descriptions/airavata-api/workflow-api.thrift
deleted file mode 100644
index 94b6a32..0000000
--- a/thrift-interface-descriptions/airavata-api/workflow-api.thrift
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Application Programming Interface definition for Apache Airavata Services.
- *   this parent thrift file is contains all service interfaces. The data models are 
- *   described in respective thrift files.
-*/
-
-include "airavata-errors.thrift"
-include "airavata-data-models.thrift"
-include "experiment-model.thrift"
-include "workspace-model.thrift"
-include "compute-resource-model.thrift"
-include "application-deployment-model.thrift"
-include "application-interface-model.thrift"
-include "workflow-data-model.thrift"
-
-namespace java org.apache.airavata.api.workflow
-namespace php Airavata.API.Workflow
-namespace cpp airavata.api.workflow
-namespace perl AiravataWorkflowAPI
-namespace py apache.airavata.api.workflow
-namespace js AiravataWorkflowAPI
-
-const string AIRAVATA_API_VERSION = "0.15.0"
-
-service Workflow {
-
-  list<string> getAllWorkflows()
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-  
-  workflowDataModel.Workflow getWorkflow (1: required string workflowTemplateId)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  void deleteWorkflow (1: required string workflowTemplateId)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  string registerWorkflow(1: required workflowDataModel.Workflow workflow)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  void updateWorkflow (1: required string workflowTemplateId, 2: required workflowDataModel.Workflow workflow)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  string getWorkflowTemplateId (1: required string workflowName)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  bool isWorkflowExistWithName(1: required string workflowName)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
- }
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index e0ee74a..0000000
--- a/thrift-interface-descriptions/airavata-api/workflow-data-model.thrift
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-
-namespace java org.apache.airavata.model
-namespace php Airavata.Model
-namespace py apache.airavata.model.workflow
-
-include "application-interface-model.thrift"
-
-/*
- * This file describes the definitions of the Airavata Execution 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.
-*/
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-struct Workflow {
-    1: required string templateId = DEFAULT_ID,
-    2: required string name,
-    3: optional string graph,
-    4: optional binary image,
-    5: optional list<applicationInterfaceModel.InputDataObjectType> workflowInputs,
-    6: optional list<applicationInterfaceModel.OutputDataObjectType> workflowOutputs
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/workflow_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/workflow_api.thrift b/thrift-interface-descriptions/airavata-api/workflow_api.thrift
new file mode 100644
index 0000000..064f128
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/workflow_api.thrift
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ *
+*/
+
+/**
+ * Application Programming Interface definition for Apache Airavata Services.
+ *   this parent thrift file is contains all service interfaces. The data models are 
+ *   described in respective thrift files.
+*/
+
+include "airavata_errors.thrift"
+include "airavata_data_models.thrift"
+include "experiment_model.thrift"
+include "workspace_model.thrift"
+include "compute_resource_model.thrift"
+include "application_deployment_model.thrift"
+include "application_interface_model.thrift"
+include "workflow_data_model.thrift"
+
+namespace java org.apache.airavata.api.workflow
+namespace php Airavata.API.Workflow
+namespace cpp airavata.api.workflow
+namespace perl AiravataWorkflowAPI
+namespace py apache.airavata.api.workflow
+namespace js AiravataWorkflowAPI
+
+const string AIRAVATA_API_VERSION = "0.15.0"
+
+service Workflow {
+
+  list<string> getAllWorkflows()
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+  
+  workflow_data_model.Workflow getWorkflow (1: required string workflowTemplateId)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  void deleteWorkflow (1: required string workflowTemplateId)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  string registerWorkflow(1: required workflow_data_model.Workflow workflow)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  void updateWorkflow (1: required string workflowTemplateId, 2: required workflow_data_model.Workflow workflow)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  string getWorkflowTemplateId (1: required string workflowName)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  bool isWorkflowExistWithName(1: required string workflowName)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+ }
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..920aef3
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/workflow_data_model.thrift
@@ -0,0 +1,43 @@
+/*
+ * 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
+namespace php Airavata.Model
+namespace py apache.airavata.model.workflow
+
+include "application_interface_model.thrift"
+
+/*
+ * This file describes the definitions of the Airavata Execution 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.
+*/
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+struct Workflow {
+    1: required string templateId = DEFAULT_ID,
+    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
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index c2f6fe0..0000000
--- a/thrift-interface-descriptions/airavata-api/workspace-model.thrift
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-include "experiment-model.thrift"
-
-namespace java org.apache.airavata.model.workspace
-namespace php Airavata.Model.Workspace
-namespace cpp apache.airavata.model.workspace
-namespace py apache.airavata.model.workspace
-
-/*
- * This file describes the definitions of the Airavata Workspace. The workspace is a container for all user data
- *   organized as Projects and Experiment within them.
- *
- * 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.
- *
- *
-*/
-
-struct Group {
-    1: required string groupName,
-    2: optional string description
-}
-
-struct Project {
-    1: required string projectID = experimentModel.DEFAULT_PROJECT_NAME,
-    2: required string owner,
-    3: required string name,
-    4: optional string description
-    5: optional i64 creationTime
-    6: optional list<string> sharedUsers,
-    7: optional list<string> sharedGroups
-}
-
-struct User {
-    1: required string userName,
-    2: optional list<Group> groupList
-}
-
-struct Gateway {
-    1: required string gatewayId,
-    2: optional string gatewayName,
-    3: optional string domain,
-    4: optional string emailAddress
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..46ed1c6
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/workspace_model.thrift
@@ -0,0 +1,63 @@
+/*
+ * 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 "experiment_model.thrift"
+
+namespace java org.apache.airavata.model.workspace
+namespace php Airavata.Model.Workspace
+namespace cpp apache.airavata.model.workspace
+namespace py apache.airavata.model.workspace
+
+/*
+ * This file describes the definitions of the Airavata Workspace. The workspace is a container for all user data
+ *   organized as Projects and Experiment within them.
+ *
+ * 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.
+ *
+ *
+*/
+
+struct Group {
+    1: required string groupName,
+    2: optional string description
+}
+
+struct Project {
+    1: required string projectID = experiment_model.DEFAULT_PROJECT_NAME,
+    2: required string owner,
+    3: required string name,
+    4: optional string description
+    5: optional i64 creationTime
+    6: optional list<string> sharedUsers,
+    7: optional list<string> sharedGroups
+}
+
+struct User {
+    1: required string userName,
+    2: optional list<Group> groupList
+}
+
+struct Gateway {
+    1: required string gatewayId,
+    2: optional string gatewayName,
+    3: optional string domain,
+    4: optional string emailAddress
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/generate-thrift-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/generate-thrift-stubs.sh b/thrift-interface-descriptions/generate-thrift-stubs.sh
index aed6dc8..2475251 100755
--- a/thrift-interface-descriptions/generate-thrift-stubs.sh
+++ b/thrift-interface-descriptions/generate-thrift-stubs.sh
@@ -146,12 +146,12 @@ generate_java_stubs() {
 
     # Generate the Airavata Data Model using thrift Java Beans generator. This will take generate the classes in bean style
     #   with members being private and setters returning voids.
-    #   The airavata-data-models.thrift includes rest of data models.
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/airavata-data-models.thrift || fail unable to generate java bean thrift classes on base data model
+    #   The airavata_data_models.thrift includes rest of data models.
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/airavata_data_models.thrift || fail unable to generate java bean thrift classes on base data model
 
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/app-catalog-models.thrift || fail unable to generate java bean thrift classes on app catalog data models
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/app_catalog_models.thrift || fail unable to generate java bean thrift classes on app catalog data models
 
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/workflow-data-model.thrift || fail unable to generate java bean thrift classes on app workflow data models
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen java:beans ${AIRAVATA_API_IDL_DIR}/workflow_data_model.thrift || fail unable to generate java bean thrift classes on app workflow data models
 
     # For the generated java beans add the ASF V2 License header
     add_license_header $JAVA_BEAN_GEN_DIR
@@ -171,10 +171,10 @@ generate_java_stubs() {
     rm -rf ${JAVA_GEN_DIR}
 
     # Using thrift Java generator, generate the java classes based on Airavata API. This
-    #   The airavata-api.thrift includes rest of data models.
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen java ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate java thrift classes on AiravataAPI
+    #   The airavata_api.thrift includes rest of data models.
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen java ${AIRAVATA_API_IDL_DIR}/airavata_api.thrift || fail unable to generate java thrift classes on AiravataAPI
 
-    #$THRIFT_EXEC ${THRIFT_ARGS} --gen java ${AIRAVATA_API_IDL_DIR}/workflow-api.thrift || fail unable to generate java thrift classes on WorkflowAPI
+    #$THRIFT_EXEC ${THRIFT_ARGS} --gen java ${AIRAVATA_API_IDL_DIR}/workflow_api.thrift || fail unable to generate java thrift classes on WorkflowAPI
 
     # For the generated java classes add the ASF V2 License header
     add_license_header $JAVA_GEN_DIR
@@ -199,10 +199,10 @@ generate_php_stubs() {
     rm -rf ${PHP_GEN_DIR}
 
     # Using thrift Java generator, generate the java classes based on Airavata API. This
-    #   The airavata-api.thrift includes rest of data models.
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate PHP thrift classes
+    #   The airavata_api.thrift includes rest of data models.
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_IDL_DIR}/airavata_api.thrift || fail unable to generate PHP thrift classes
 
-    #$THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_IDL_DIR}/workflow-api.thrift || fail unable to generate PHP thrift classes for WorkflowAPI
+    #$THRIFT_EXEC ${THRIFT_ARGS} --gen php:autoload ${AIRAVATA_API_IDL_DIR}/workflow_api.thrift || fail unable to generate PHP thrift classes for WorkflowAPI
     # For the generated java classes add the ASF V2 License header
     ## TODO Write PHP license parser
 
@@ -225,10 +225,10 @@ generate_cpp_stubs() {
     rm -rf ${CPP_GEN_DIR}
 
     # Using thrift Java generator, generate the java classes based on Airavata API. This
-    #   The airavata-api.thrift includes rest of data models.
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate C++ thrift classes
+    #   The airavata_api.thrift includes rest of data models.
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${AIRAVATA_API_IDL_DIR}/airavata_api.thrift || fail unable to generate C++ thrift classes
 
-    #$THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${AIRAVATA_API_IDL_DIR}/workflow-api.thrift || fail unable to generate C++ thrift classes for WorkflowAPI
+    #$THRIFT_EXEC ${THRIFT_ARGS} --gen cpp ${AIRAVATA_API_IDL_DIR}/workflow_api.thrift || fail unable to generate C++ thrift classes for WorkflowAPI
     # For the generated CPP classes add the ASF V2 License header
     add_license_header $CPP_GEN_DIR
 
@@ -251,8 +251,8 @@ generate_python_stubs() {
     rm -rf ${PYTHON_GEN_DIR}
 
     # Using thrift Python generator, generate the python classes based on Airavata API. This
-    #   The airavata-api.thrift includes rest of data models.
-    $THRIFT_EXEC ${THRIFT_ARGS} --gen py ${AIRAVATA_API_IDL_DIR}/airavata-api.thrift || fail unable to generate Python thrift classes
+    #   The airavata_api.thrift includes rest of data models.
+    $THRIFT_EXEC ${THRIFT_ARGS} --gen py ${AIRAVATA_API_IDL_DIR}/airavata_api.thrift || fail unable to generate Python thrift classes
 
     # For the generated CPP classes add the ASF V2 License header
     #add_license_header #PYTHON_GEN_DIR

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh b/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
index 8971874..9a660e5 100755
--- a/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
+++ b/thrift-interface-descriptions/gfac-cpi/generate-gfac-stubs.sh
@@ -116,7 +116,7 @@ JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
 rm -rf ${JAVA_GEN_DIR}
 
 # Using thrify Java generator, generate the java classes based on Airavata API. This
-#   The airavata-api.thrift includes rest of data models.
+#   The airavata_api.thrift includes rest of data models.
 thrift ${THRIFT_ARGS} --gen java gfac.cpi.service.thrift || fail unable to generate java thrift classes
 thrift ${THRIFT_ARGS} --gen java gfacDataModel.thrift || fail unable to generate java thrift classes
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh b/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
index 4e088fe..2137370 100755
--- a/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
+++ b/thrift-interface-descriptions/orchestrator-cpi/generate-orchestrator-stubs.sh
@@ -116,7 +116,7 @@ JAVA_GEN_DIR=${BASE_TARGET_DIR}/gen-java
 rm -rf ${JAVA_GEN_DIR}
 
 # Using thrify Java generator, generate the java classes based on Airavata API. This
-#   The airavata-api.thrift includes rest of data models.
+#   The airavata_api.thrift includes rest of data models.
 thrift ${THRIFT_ARGS} --gen java orchestrator.cpi.service.thrift || fail unable to generate java thrift classes
 
 # For the generated java classes add the ASF V2 License header

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift b/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
index 1b7a2ea..62a6d8d 100644
--- a/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
+++ b/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift
@@ -23,7 +23,7 @@
  *
 */
 
-include "../airavata-api/airavata-errors.thrift"
+include "../airavata-api/airavata_errors.thrift"
 namespace java org.apache.airavata.orchestrator.cpi
 
 const string ORCHESTRATOR_CPI_VERSION = "0.13.0"
@@ -65,7 +65,7 @@ service OrchestratorService {
      *
     **/
   bool validateExperiment(1: required string experimentId)
-  throws (1: airavataErrors.LaunchValidationException lve)
+  throws (1: airavata_errors.LaunchValidationException lve)
     /**
      *
      * Terminate the running experiment.


[6/6] airavata git commit: Replaced hyphens with underscores for thrift file names

Posted by sm...@apache.org.
Replaced hyphens with underscores for thrift file names


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/068c18b9
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/068c18b9
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/068c18b9

Branch: refs/heads/master
Commit: 068c18b970fc8cd181610eae5dab75d9a51bf5d6
Parents: f742ebd
Author: Suresh Marru <sm...@apache.org>
Authored: Thu Jun 11 12:48:14 2015 -0400
Committer: Suresh Marru <sm...@apache.org>
Committed: Thu Jun 11 12:48:14 2015 -0400

----------------------------------------------------------------------
 .../airavata-api/airavata-api.thrift            | 2079 ------------------
 .../airavata-api/airavata-data-models.thrift    |   38 -
 .../airavata-api/airavata-errors.thrift         |  172 --
 .../airavata-api/airavata_api.thrift            | 2079 ++++++++++++++++++
 .../airavata-api/airavata_data_models.thrift    |   38 +
 .../airavata-api/airavata_errors.thrift         |  172 ++
 .../airavata-api/app-catalog-models.thrift      |   24 -
 .../airavata-api/app_catalog_models.thrift      |   24 +
 .../application-deployment-model.thrift         |  132 --
 .../application-interface-model.thrift          |  146 --
 .../application_deployment_model.thrift         |  132 ++
 .../application_interface_model.thrift          |  146 ++
 .../airavata-api/compute-resource-model.thrift  |  445 ----
 .../airavata-api/compute_resource_model.thrift  |  445 ++++
 .../airavata-api/experiment-model.thrift        |  422 ----
 .../airavata-api/experiment_model.thrift        |  422 ++++
 .../gateway-resource-profile-model.thrift       |   83 -
 .../gateway_resource_profile_model.thrift       |   83 +
 .../airavata-api/messaging-events.thrift        |  149 --
 .../airavata-api/messaging_events.thrift        |  149 ++
 .../airavata-api/security-model.thrift          |   35 -
 .../airavata-api/security_model.thrift          |   35 +
 .../airavata-api/workflow-api.thrift            |   82 -
 .../airavata-api/workflow-data-model.thrift     |   43 -
 .../airavata-api/workflow_api.thrift            |   82 +
 .../airavata-api/workflow_data_model.thrift     |   43 +
 .../airavata-api/workspace-model.thrift         |   63 -
 .../airavata-api/workspace_model.thrift         |   63 +
 .../generate-thrift-stubs.sh                    |   30 +-
 .../gfac-cpi/generate-gfac-stubs.sh             |    2 +-
 .../generate-orchestrator-stubs.sh              |    2 +-
 .../orchestrator.cpi.service.thrift             |    4 +-
 32 files changed, 3932 insertions(+), 3932 deletions(-)
----------------------------------------------------------------------



[2/6] airavata git commit: Replaced hyphens with underscores for thrift file names

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/airavata_data_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/airavata_data_models.thrift b/thrift-interface-descriptions/airavata-api/airavata_data_models.thrift
new file mode 100644
index 0000000..caa747f
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/airavata_data_models.thrift
@@ -0,0 +1,38 @@
+/*
+ * 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 "workspace_model.thrift"
+include "airavata_errors.thrift"
+include "messaging_events.thrift"
+include "security_model.thrift"
+
+namespace java org.apache.airavata.model
+namespace php Airavata.Model
+namespace cpp apache.airavata.model
+namespace py apache.airavata.model
+
+/*
+ * This file describes the definitions of the Airavata Execution 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.
+*/
+
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..e0849a1
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/airavata_errors.thrift
@@ -0,0 +1,172 @@
+/*
+ * 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.
+ *
+ */
+
+/*
+* This file describes the definitions of the Error Messages that can occur
+*  when invoking Apache Airavata Services through the API. In addition Thrift provides
+*  built in funcationality to raise TApplicationException for all internal server errors.
+*/
+
+include "experiment_model.thrift"
+
+namespace java org.apache.airavata.model.error
+namespace php Airavata.API.Error
+namespace cpp apache.airavata.api.error
+namespace perl AiravataAPIError
+namespace py apache.airavata.api.error
+namespace js AiravataAPIError
+
+/**
+ * A list of Airavata API Error Message Types
+ *
+ *  UNKNOWN: No information available about the error
+ *   
+ *  PERMISSION_DENIED: Not permitted to perform action
+ * 
+ *  INTERNAL_ERROR: Unexpected problem with the service
+ * 
+ *  AUTHENTICATION_FAILURE: The client failed to authenticate.
+ *
+ *  INVALID_AUTHORIZATION: Security Token and/or Username and/or password is incorrect
+ *   
+ *  AUTHORIZATION_EXPIRED: Authentication token expired
+ *  
+ *  UNKNOWN_GATEWAY_ID: The gateway is not registered with Airavata.
+ * 
+ *  UNSUPPORTED_OPERATION: Operation denied because it is currently unsupported.
+ */
+
+enum AiravataErrorType {
+  UNKNOWN,
+  PERMISSION_DENIED,
+  INTERNAL_ERROR,
+  AUTHENTICATION_FAILURE,
+  INVALID_AUTHORIZATION,
+  AUTHORIZATION_EXPIRED,
+  UNKNOWN_GATEWAY_ID,
+  UNSUPPORTED_OPERATION
+}
+
+/**
+ * This exception is thrown when a client asks to perform an operation on an experiment that does not exist.
+ *
+ * identifier:  A description of the experiment that was not found on the server.
+ *
+ * key:  The value passed from the client in the identifier, which was not found.
+ */
+exception ExperimentNotFoundException {
+  1: required string message
+  /**
+  * 1:  optional  string identifier,
+  * 2:  optional  string key
+  **/
+}
+
+exception ProjectNotFoundException {
+  1: required string message
+}
+
+/** 
+* This exception is thrown for invalid requests that occur from any reasons like required input parameters are missing, 
+*  or a parameter is malformed.
+* 
+*  message: contains the associated error message.
+*/
+exception InvalidRequestException {
+    1: required string message
+}
+
+
+/** 
+*  This exception is thrown when RPC timeout gets exceeded. 
+*/
+exception TimedOutException {
+}
+
+/** 
+* This exception is thrown for invalid authentication requests.
+* 
+*  message: contains the cause of the authorization failure.
+*/
+exception AuthenticationException {
+    1: required string message
+}
+
+/** 
+* This exception is thrown for invalid authorization requests such user does not have acces to an aplication or resource.
+*
+*  message: contains the authorization failure message
+*/
+exception AuthorizationException {
+    1: required string message
+}
+
+
+/**
+ * This exception is thrown by Airavata Services when a call fails as a result of
+ * a problem that a client may be able to resolve.  For example, if the user
+ * attempts to execute an application on a resource gateway does not have access to.
+ *
+ * This exception would not be used for internal system errors that do not
+ * reflect user actions, but rather reflect a problem within the service that
+ * the client cannot resolve.
+ *
+ * airavataErrorType:  The message type indicating the error that occurred.
+ *   must be one of the values of AiravataErrorType.
+ *
+ * parameter:  If the error applied to a particular input parameter, this will
+ *   indicate which parameter.
+ */
+exception AiravataClientException {
+  1:  required  AiravataErrorType airavataErrorType,
+  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.
+ *
+ * airavataErrorType:  The message type indicating the error that occurred.
+ *   must be one of the values of AiravataErrorType.
+ *
+ * message:  This may contain additional information about the error
+ *
+ */
+exception AiravataSystemException {
+  1:  required  AiravataErrorType airavataErrorType,
+  2:  optional  string message,
+}
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift b/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift
deleted file mode 100644
index 389f292..0000000
--- a/thrift-interface-descriptions/airavata-api/app-catalog-models.thrift
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-include "compute-resource-model.thrift"
-include "application-deployment-model.thrift"
-include "application-interface-model.thrift"
-include "gateway-resource-profile-model.thrift"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/app_catalog_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/app_catalog_models.thrift b/thrift-interface-descriptions/airavata-api/app_catalog_models.thrift
new file mode 100644
index 0000000..ad3cfe1
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/app_catalog_models.thrift
@@ -0,0 +1,24 @@
+/*
+ * 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_deployment_model.thrift"
+include "application_interface_model.thrift"
+include "gateway_resource_profile_model.thrift"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift b/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift
deleted file mode 100644
index a965e23..0000000
--- a/thrift-interface-descriptions/airavata-api/application-deployment-model.thrift
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-/**
- * This file describes the definitions of the Data Structures related to deployment of Application on
- *  computational resources.
- *
-*/
-
-namespace java org.apache.airavata.model.appcatalog.appdeployment
-namespace php Airavata.Model.AppCatalog.AppDeployment
-namespace cpp apache.airavata.model.appcatalog.appdeployment
-namespace py apache.airavata.model.appcatalog.appdeployment
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-/**
- * Key Value pairs to be used to set environments
- *
- * name:
- *   Name of the environment variable such as PATH, LD_LIBRARY_PATH, NETCDF_HOME.
- *
- * value:
- *   Value of the environment variable to set
-*/
-struct SetEnvPaths {
-    1: required string name,
-    2: required string value
-}
-
-/**
- * Application Module Information. A module has to be registered before registering a deployment.
- *
- * appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
- *
- * appModuleName:
- *   Name of the application module.
- *
- * appModuleVersion:
- *   Version of the application.
- *
- * appModuleDescription:
- *    Descriprion of the Module
- *
-*/
-struct ApplicationModule {
-    1: required string appModuleId = DEFAULT_ID,
-    2: required string appModuleName,
-    3: optional string appModuleVersion,
-    4: optional string appModuleDescription
-}
-
-/**
- * Enumeration of application parallelism supported by Airavata
- *
- * SERIAL:
- *  Single processor applications without any parallelization.
- *
- * MPI:
- *  Messaging Passing Interface.
- *
- * OPENMP:
- *  Shared Memory Implementtaion.
- *
- * OPENMP_MPI:
- *  Hybrid Applications.
- *
-*/
-enum ApplicationParallelismType {
-    SERIAL,
-    MPI,
-    OPENMP,
-    OPENMP_MPI
-}
-/**
- * Application Deployment Description
- *
- * appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
- *
- * appModuleName:
- *   Application Module Name. This has to be precise describing the binary.
- *
- * computeHostId:
- *   This ID maps application deployment to a particular resource previously described within Airavata.
- *   Example: Stampede is first registered and refered when registering WRF.
- *
- * moduleLoadCmd:
- *  Command string to load modules. This will be placed in the job submisison
- *  Ex: module load amber
- *
- * libPrependPaths:
- *  prepend to a path variable the value
- *
- * libAppendPaths:
- *  append to a path variable the value
- *
- * setEnvironment:
- *  assigns to the environment variable "NAME" the value
- *
-*/
-struct ApplicationDeploymentDescription {
-//    1: required bool isEmpty = 0,
-    1: required string appDeploymentId = DEFAULT_ID,
-    2: required string appModuleId,
-    3: required string computeHostId,
-    4: required string executablePath,
-    5: required ApplicationParallelismType parallelism = ApplicationParallelismType.SERIAL,
-	6: optional string appDeploymentDescription,
-	7: optional list<string> moduleLoadCmds,
-	8: optional list<SetEnvPaths> libPrependPaths,
-	9: optional list<SetEnvPaths> libAppendPaths,
-	10: optional list<SetEnvPaths> setEnvironment,
-	11: optional list<string> preJobCommands,
-	12: optional list<string> postJobCommands,
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index 4c57009..0000000
--- a/thrift-interface-descriptions/airavata-api/application-interface-model.thrift
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-/**
- * This file describes the definitions of the Data Structures of Application interfaces. These interfaces are mapped
- *  to application mapping on various resources.
- *
-*/
-
-namespace java org.apache.airavata.model.appcatalog.appinterface
-namespace php Airavata.Model.AppCatalog.AppInterface
-namespace cpp apache.airavata.model.appcatalog.appinterface
-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:
- *   Associate all application modules with versions which interface is applicable to.
- *
- * applicationInputs:
- *   Inputs to be passed to the application
- *
- * applicationOutputs:
- *   Outputs generated from the application
- *
-*/
-struct ApplicationInterfaceDescription {
-//    1: required bool isEmpty = 0,
-    1: required string applicationInterfaceId = DEFAULT_ID,
-    2: required string applicationName,
-    3: optional string applicationDescription,
-    4: optional list<string> applicationModules,
-    5: optional list<InputDataObjectType> applicationInputs,
-    6: optional list<OutputDataObjectType> applicationOutputs
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/application_deployment_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/application_deployment_model.thrift b/thrift-interface-descriptions/airavata-api/application_deployment_model.thrift
new file mode 100644
index 0000000..a965e23
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/application_deployment_model.thrift
@@ -0,0 +1,132 @@
+/*
+ * 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.
+ *
+ */
+
+/**
+ * This file describes the definitions of the Data Structures related to deployment of Application on
+ *  computational resources.
+ *
+*/
+
+namespace java org.apache.airavata.model.appcatalog.appdeployment
+namespace php Airavata.Model.AppCatalog.AppDeployment
+namespace cpp apache.airavata.model.appcatalog.appdeployment
+namespace py apache.airavata.model.appcatalog.appdeployment
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+/**
+ * Key Value pairs to be used to set environments
+ *
+ * name:
+ *   Name of the environment variable such as PATH, LD_LIBRARY_PATH, NETCDF_HOME.
+ *
+ * value:
+ *   Value of the environment variable to set
+*/
+struct SetEnvPaths {
+    1: required string name,
+    2: required string value
+}
+
+/**
+ * Application Module Information. A module has to be registered before registering a deployment.
+ *
+ * appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
+ *
+ * appModuleName:
+ *   Name of the application module.
+ *
+ * appModuleVersion:
+ *   Version of the application.
+ *
+ * appModuleDescription:
+ *    Descriprion of the Module
+ *
+*/
+struct ApplicationModule {
+    1: required string appModuleId = DEFAULT_ID,
+    2: required string appModuleName,
+    3: optional string appModuleVersion,
+    4: optional string appModuleDescription
+}
+
+/**
+ * Enumeration of application parallelism supported by Airavata
+ *
+ * SERIAL:
+ *  Single processor applications without any parallelization.
+ *
+ * MPI:
+ *  Messaging Passing Interface.
+ *
+ * OPENMP:
+ *  Shared Memory Implementtaion.
+ *
+ * OPENMP_MPI:
+ *  Hybrid Applications.
+ *
+*/
+enum ApplicationParallelismType {
+    SERIAL,
+    MPI,
+    OPENMP,
+    OPENMP_MPI
+}
+/**
+ * Application Deployment Description
+ *
+ * appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
+ *
+ * appModuleName:
+ *   Application Module Name. This has to be precise describing the binary.
+ *
+ * computeHostId:
+ *   This ID maps application deployment to a particular resource previously described within Airavata.
+ *   Example: Stampede is first registered and refered when registering WRF.
+ *
+ * moduleLoadCmd:
+ *  Command string to load modules. This will be placed in the job submisison
+ *  Ex: module load amber
+ *
+ * libPrependPaths:
+ *  prepend to a path variable the value
+ *
+ * libAppendPaths:
+ *  append to a path variable the value
+ *
+ * setEnvironment:
+ *  assigns to the environment variable "NAME" the value
+ *
+*/
+struct ApplicationDeploymentDescription {
+//    1: required bool isEmpty = 0,
+    1: required string appDeploymentId = DEFAULT_ID,
+    2: required string appModuleId,
+    3: required string computeHostId,
+    4: required string executablePath,
+    5: required ApplicationParallelismType parallelism = ApplicationParallelismType.SERIAL,
+	6: optional string appDeploymentDescription,
+	7: optional list<string> moduleLoadCmds,
+	8: optional list<SetEnvPaths> libPrependPaths,
+	9: optional list<SetEnvPaths> libAppendPaths,
+	10: optional list<SetEnvPaths> setEnvironment,
+	11: optional list<string> preJobCommands,
+	12: optional list<string> postJobCommands,
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..4c57009
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/application_interface_model.thrift
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ *
+ */
+
+/**
+ * This file describes the definitions of the Data Structures of Application interfaces. These interfaces are mapped
+ *  to application mapping on various resources.
+ *
+*/
+
+namespace java org.apache.airavata.model.appcatalog.appinterface
+namespace php Airavata.Model.AppCatalog.AppInterface
+namespace cpp apache.airavata.model.appcatalog.appinterface
+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:
+ *   Associate all application modules with versions which interface is applicable to.
+ *
+ * applicationInputs:
+ *   Inputs to be passed to the application
+ *
+ * applicationOutputs:
+ *   Outputs generated from the application
+ *
+*/
+struct ApplicationInterfaceDescription {
+//    1: required bool isEmpty = 0,
+    1: required string applicationInterfaceId = DEFAULT_ID,
+    2: required string applicationName,
+    3: optional string applicationDescription,
+    4: optional list<string> applicationModules,
+    5: optional list<InputDataObjectType> applicationInputs,
+    6: optional list<OutputDataObjectType> applicationOutputs
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift b/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift
deleted file mode 100644
index 6e8361c..0000000
--- a/thrift-interface-descriptions/airavata-api/compute-resource-model.thrift
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-namespace java org.apache.airavata.model.appcatalog.computeresource
-namespace php Airavata.Model.AppCatalog.ComputeResource
-namespace cpp apache.airavata.model.appcatalog.computeresource
-namespace py apache.airavata.model.appcatalog.computeresource
-
-const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
-
-/**
- * Enumeration of local resource job manager types supported by Airavata
- *
- * FORK:
- *  Forking of commands without any job manager
- *
- * PBS:
- *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
- *
- * SLURM:
- *  The Simple Linux Utility for Resource Management is a open source workload manager.
-  *
-  * UGE:
-  *  Univa Grid Engine, a variation of PBS implementation.
-  *
-  * LSF:
-  *  IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
- *
-*/
-enum ResourceJobManagerType {
-    FORK,
-    PBS,
-    SLURM,
-    LSF,
-    UGE
-}
-
-/**
- * Enumeration of resource job manager commands
- *
- * SUBMISSION:
- *  Ex: qsub, sbatch
- *
- * JOBMONITORING:
- *  Ex: qstat, squeue
- *
- * DELETION:
- *  Ex: qdel, scancel
- *
- * CHECK_JOB:
- *  Detailed Status about the Job. Ex: checkjob
- *
- * SHOW_QUEUE:
- *  List of Queued Job by the schedular. Ex: showq
- *
- * SHOW_RESERVATION:
- *  List all reservations. Ex:showres, show_res
- *
- * SHOW_START:
- *  Display the start time of the specified job. Ex: showstart
- *
-*/
-enum JobManagerCommand {
-    SUBMISSION,
-    JOB_MONITORING,
-    DELETION,
-    CHECK_JOB,
-    SHOW_QUEUE,
-    SHOW_RESERVATION,
-    SHOW_START
-}
-
-
-/**
- * Resource Job Manager Information
- *
- * resourceJobManagerType:
- *  A typical HPC cluster has a single Job Manager to manage the resources.
- *
- * pushMonitoringEndpoint:
- *  If the job manager pushes out state changes to a database or bus, specify the service endpoint.
- *   Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
- *
- * jobManagerBinPath:
- *  Path to the Job Manager Installation Binary directory.
- *
- * jobManagerCommands:
- *  An enumeration of commonly used manager commands.
- *
-*/
-struct ResourceJobManager {
-    1: required string resourceJobManagerId = DEFAULT_ID,
-    2: required ResourceJobManagerType resourceJobManagerType,
-    3: optional string pushMonitoringEndpoint,
-    4: optional string jobManagerBinPath,
-    5: optional map<JobManagerCommand, string> jobManagerCommands
-}
-
-/**
- * Enumeration of File Systems on the resource
- *
- * FORK:
- *  Forking of commands without any job manager
- *
- * PBS:
- *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
- *
- * UGE:
- *  Univa Grid Engine, a variation of PBS implementation.
- *
- * SLURM:
- *  The Simple Linux Utility for Resource Management is a open source workload manager.
- *
-*/
-enum FileSystems {
-    HOME,
-    WORK,
-    LOCALTMP,
-    SCRATCH,
-    ARCHIVE
-}
-
-/**
- * Batch Queue Information on SuperComputers
- *
- * maxRunTime:
- *  Maximum allowed run time in hours.
-*/
-struct BatchQueue {
-    1: required string queueName,
-    2: optional string queueDescription,
-    3: optional i32 maxRunTime,
-    4: optional i32 maxNodes,
-    5: optional i32 maxProcessors,
-    6: optional i32 maxJobsInQueue,
-    7: optional i32 maxMemory
-}
-
-/**
- * Enumeration of security authentication and authorization mechanisms supported by Airavata. This enumeration just
- *  describes the supported mechanism. The corresponding security credentials are registered with Airavata Credential
- *  store.
- *
- * USERNAME_PASSWORD:
- *  A User Name.
- *
- * SSH_KEYS:
- *  SSH Keys
- *
- * FIXME: Change GSI to a more precise generic security protocol - X509
- *
-*/
-enum SecurityProtocol {
-    USERNAME_PASSWORD,
-    SSH_KEYS,
-    GSI,
-    KERBEROS,
-    OAUTH
-}
-
-/**
- * Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
- *
- * SSH:
- *  Execute remote job submission commands using via secure shell protocol.
- *
- * GRAM:
- *  Execute remote jobs via Globus GRAM service.
- *
- * UNICORE:
- *  Execute remote jobs via Unicore services
- *
-*/
-enum JobSubmissionProtocol {
-    LOCAL,
-    SSH,
-    GLOBUS,
-    UNICORE,
-    CLOUD
-}
-
-/**
-* Monitoring modes
-*
-* POLL_JOB_MANAGER:
-* GFac need to pull job status changes.
-*
-* XSEDE_AMQP_SUBSCRIBE:
-* Server will publish job status changes to amqp servert.
-*
-**/
-enum MonitorMode {
-   POLL_JOB_MANAGER,
-   JOB_EMAIL_NOTIFICATION_MONITOR,
-   XSEDE_AMQP_SUBSCRIBE
-}
-
-/**
- * Enumeration of data movement supported by Airavata
- *
- * SCP:
- *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
- *
- * SFTP:
- *  The Simple Linux Utility for Resource Management is a open source workload manager.
- *
- * GridFTP:
- *  Globus File Transfer Protocol
- *
- * UNICORE_STORAGE_SERVICE:
- *  Storage Service Provided by Unicore
- *
-*/
-enum DataMovementProtocol {
-    LOCAL,
-    SCP,
-    SFTP,
-    GridFTP,
-    UNICORE_STORAGE_SERVICE
-}
-
-/**
- * Data Movement through Secured Copy
- *
- * alternativeSCPHostName:
- *  If the login to scp is different than the hostname itself, specify it here
- *
- * sshPort:
- *  If a non-default port needs to used, specify it.
-*/
-struct SCPDataMovement {
-    1: required string dataMovementInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: optional string alternativeSCPHostName,
-    4: optional i32 sshPort = 22
-}
-
-/**
- * Data Movement through GridFTP
- *
- * alternativeSCPHostName:
- *  If the login to scp is different than the hostname itself, specify it here
- *
- * sshPort:
- *  If a non-default port needs to used, specify it.
-*/
-struct GridFTPDataMovement {
-    1: required string dataMovementInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: required list<string>  gridFTPEndPoints
-}
-
-/**
- * Data Movement through UnicoreStorage
- *
- * unicoreEndPointURL:
- *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
-*/
-struct UnicoreDataMovement {
-    1: required string dataMovementInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: required string unicoreEndPointURL
-}
-
-/**
- * Locally Fork Jobs as OS processes
- *
- * alternativeSSHHostName:
- *  If the login to ssh is different than the hostname itself, specify it here
- *
- * sshPort:
- *  If a non-default port needs to used, specify it.
-*/
-struct LOCALSubmission {
-    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
-    2: required ResourceJobManager resourceJobManager
-}
-
-/**
- * LOCAL
- *
- * alternativeSCPHostName:
- *  If the login to scp is different than the hostname itself, specify it here
- *
- * sshPort:
- *  If a non-defualt port needs to used, specify it.
-*/
-struct LOCALDataMovement {
-    1: required string dataMovementInterfaceId = DEFAULT_ID,
-}
-
-/**
- * Authenticate using Secured Shell
- *
- * alternativeSSHHostName:
- *  If the login to ssh is different than the hostname itself, specify it here
- *
- * sshPort:
- *  If a non-default port needs to used, specify it.
-*/
-struct SSHJobSubmission {
-    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: required ResourceJobManager resourceJobManager,
-    4: optional string alternativeSSHHostName,
-    5: optional i32 sshPort = 22,
-    6: optional MonitorMode monitorMode,
-}
-
-struct GlobusJobSubmission {
-    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: optional list<string> globusGateKeeperEndPoint
-}
-
-/**
- * Unicore Job Submission
- *
- * unicoreEndPointURL:
- *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
- * authenticationMode
- *  The authenticationMode defines the way certificate is fetched. 
-*/
-struct UnicoreJobSubmission {
-    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: required string unicoreEndPointURL,
-}
-
-
-
-/**
-* Provider name
-**/
-enum ProviderName {
-    EC2,
-    AWSEC2,
-    RACKSPACE
-}
-
-/**
- * Cloud Job Submission
- *
- *
-*/
-struct CloudJobSubmission {
-    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
-    2: required SecurityProtocol securityProtocol,
-    3: required string nodeId,
-    4: required string executableType,
-    5: required ProviderName providerName,
-    6: required string userAccountName
-}
-
-/**
- * Job Submission Interfaces
- *
- * jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
- *
- * priorityOrder:
- *  For resources with multiple interfaces, the priority order should be selected.
- *   Lower the numerical number, higher the priority
- *
-*/
-struct JobSubmissionInterface {
-    1: required string jobSubmissionInterfaceId,
-    2: required JobSubmissionProtocol jobSubmissionProtocol
-    3: required i32 priorityOrder = 0,
-}
-
-/**
- * Data Movement Interfaces
- *
- * dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
- *
- * priorityOrder:
- *  For resources with multiple interfaces, the priority order should be selected.
- *   Lower the numerical number, higher the priority
- *
-*/
-struct DataMovementInterface {
-    1: required string dataMovementInterfaceId,
-    2: required DataMovementProtocol dataMovementProtocol,
-    3: required i32 priorityOrder = 0,
-}
-
-/**
- * Computational Resource Description
- *
- * computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
- *
- * hostName:
- *   Fully Qualified Host Name.
- *
- * hostAliases:
- *   Aliases if any.
- *
- * ipAddress:
- *   IP Addresses of the Resource.
- *
- * resourceDescription:
- *  A user friendly description of the resource.
- *
- * JobSubmissionProtocols:
- *  A computational resources may have one or more ways of submitting Jobs. This structure
- *    will hold all available mechanisms to interact with the resource.
- *  The key is the priority
- *
- * DataMovementProtocol:
- *  Option to specify a prefered data movement mechanism of the available options.
- *
- * fileSystems:
- *  Map of file systems type and the path.
- *
-*/
-struct ComputeResourceDescription {
-//    1: required bool isEmpty = 0,
-    1: required string computeResourceId = DEFAULT_ID,
-    2: required string hostName,
-    3: optional list<string> hostAliases,
-    4: optional list<string> ipAddresses,
-    5: optional string resourceDescription,
-    6: optional list<BatchQueue> batchQueues,
-    7: optional map<FileSystems, string> fileSystems,
-    8: optional list<JobSubmissionInterface> jobSubmissionInterfaces,
-    9: optional list<DataMovementInterface> dataMovementInterfaces,
-    10: optional i32 maxMemoryPerNode
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift b/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
new file mode 100644
index 0000000..6e8361c
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
@@ -0,0 +1,445 @@
+/*
+ * 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.appcatalog.computeresource
+namespace php Airavata.Model.AppCatalog.ComputeResource
+namespace cpp apache.airavata.model.appcatalog.computeresource
+namespace py apache.airavata.model.appcatalog.computeresource
+
+const string DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+
+/**
+ * Enumeration of local resource job manager types supported by Airavata
+ *
+ * FORK:
+ *  Forking of commands without any job manager
+ *
+ * PBS:
+ *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ *
+ * SLURM:
+ *  The Simple Linux Utility for Resource Management is a open source workload manager.
+  *
+  * UGE:
+  *  Univa Grid Engine, a variation of PBS implementation.
+  *
+  * LSF:
+  *  IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
+ *
+*/
+enum ResourceJobManagerType {
+    FORK,
+    PBS,
+    SLURM,
+    LSF,
+    UGE
+}
+
+/**
+ * Enumeration of resource job manager commands
+ *
+ * SUBMISSION:
+ *  Ex: qsub, sbatch
+ *
+ * JOBMONITORING:
+ *  Ex: qstat, squeue
+ *
+ * DELETION:
+ *  Ex: qdel, scancel
+ *
+ * CHECK_JOB:
+ *  Detailed Status about the Job. Ex: checkjob
+ *
+ * SHOW_QUEUE:
+ *  List of Queued Job by the schedular. Ex: showq
+ *
+ * SHOW_RESERVATION:
+ *  List all reservations. Ex:showres, show_res
+ *
+ * SHOW_START:
+ *  Display the start time of the specified job. Ex: showstart
+ *
+*/
+enum JobManagerCommand {
+    SUBMISSION,
+    JOB_MONITORING,
+    DELETION,
+    CHECK_JOB,
+    SHOW_QUEUE,
+    SHOW_RESERVATION,
+    SHOW_START
+}
+
+
+/**
+ * Resource Job Manager Information
+ *
+ * resourceJobManagerType:
+ *  A typical HPC cluster has a single Job Manager to manage the resources.
+ *
+ * pushMonitoringEndpoint:
+ *  If the job manager pushes out state changes to a database or bus, specify the service endpoint.
+ *   Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
+ *
+ * jobManagerBinPath:
+ *  Path to the Job Manager Installation Binary directory.
+ *
+ * jobManagerCommands:
+ *  An enumeration of commonly used manager commands.
+ *
+*/
+struct ResourceJobManager {
+    1: required string resourceJobManagerId = DEFAULT_ID,
+    2: required ResourceJobManagerType resourceJobManagerType,
+    3: optional string pushMonitoringEndpoint,
+    4: optional string jobManagerBinPath,
+    5: optional map<JobManagerCommand, string> jobManagerCommands
+}
+
+/**
+ * Enumeration of File Systems on the resource
+ *
+ * FORK:
+ *  Forking of commands without any job manager
+ *
+ * PBS:
+ *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ *
+ * UGE:
+ *  Univa Grid Engine, a variation of PBS implementation.
+ *
+ * SLURM:
+ *  The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+*/
+enum FileSystems {
+    HOME,
+    WORK,
+    LOCALTMP,
+    SCRATCH,
+    ARCHIVE
+}
+
+/**
+ * Batch Queue Information on SuperComputers
+ *
+ * maxRunTime:
+ *  Maximum allowed run time in hours.
+*/
+struct BatchQueue {
+    1: required string queueName,
+    2: optional string queueDescription,
+    3: optional i32 maxRunTime,
+    4: optional i32 maxNodes,
+    5: optional i32 maxProcessors,
+    6: optional i32 maxJobsInQueue,
+    7: optional i32 maxMemory
+}
+
+/**
+ * Enumeration of security authentication and authorization mechanisms supported by Airavata. This enumeration just
+ *  describes the supported mechanism. The corresponding security credentials are registered with Airavata Credential
+ *  store.
+ *
+ * USERNAME_PASSWORD:
+ *  A User Name.
+ *
+ * SSH_KEYS:
+ *  SSH Keys
+ *
+ * FIXME: Change GSI to a more precise generic security protocol - X509
+ *
+*/
+enum SecurityProtocol {
+    USERNAME_PASSWORD,
+    SSH_KEYS,
+    GSI,
+    KERBEROS,
+    OAUTH
+}
+
+/**
+ * Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
+ *
+ * SSH:
+ *  Execute remote job submission commands using via secure shell protocol.
+ *
+ * GRAM:
+ *  Execute remote jobs via Globus GRAM service.
+ *
+ * UNICORE:
+ *  Execute remote jobs via Unicore services
+ *
+*/
+enum JobSubmissionProtocol {
+    LOCAL,
+    SSH,
+    GLOBUS,
+    UNICORE,
+    CLOUD
+}
+
+/**
+* Monitoring modes
+*
+* POLL_JOB_MANAGER:
+* GFac need to pull job status changes.
+*
+* XSEDE_AMQP_SUBSCRIBE:
+* Server will publish job status changes to amqp servert.
+*
+**/
+enum MonitorMode {
+   POLL_JOB_MANAGER,
+   JOB_EMAIL_NOTIFICATION_MONITOR,
+   XSEDE_AMQP_SUBSCRIBE
+}
+
+/**
+ * Enumeration of data movement supported by Airavata
+ *
+ * SCP:
+ *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ *
+ * SFTP:
+ *  The Simple Linux Utility for Resource Management is a open source workload manager.
+ *
+ * GridFTP:
+ *  Globus File Transfer Protocol
+ *
+ * UNICORE_STORAGE_SERVICE:
+ *  Storage Service Provided by Unicore
+ *
+*/
+enum DataMovementProtocol {
+    LOCAL,
+    SCP,
+    SFTP,
+    GridFTP,
+    UNICORE_STORAGE_SERVICE
+}
+
+/**
+ * Data Movement through Secured Copy
+ *
+ * alternativeSCPHostName:
+ *  If the login to scp is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+*/
+struct SCPDataMovement {
+    1: required string dataMovementInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: optional string alternativeSCPHostName,
+    4: optional i32 sshPort = 22
+}
+
+/**
+ * Data Movement through GridFTP
+ *
+ * alternativeSCPHostName:
+ *  If the login to scp is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+*/
+struct GridFTPDataMovement {
+    1: required string dataMovementInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: required list<string>  gridFTPEndPoints
+}
+
+/**
+ * Data Movement through UnicoreStorage
+ *
+ * unicoreEndPointURL:
+ *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
+*/
+struct UnicoreDataMovement {
+    1: required string dataMovementInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: required string unicoreEndPointURL
+}
+
+/**
+ * Locally Fork Jobs as OS processes
+ *
+ * alternativeSSHHostName:
+ *  If the login to ssh is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+*/
+struct LOCALSubmission {
+    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+    2: required ResourceJobManager resourceJobManager
+}
+
+/**
+ * LOCAL
+ *
+ * alternativeSCPHostName:
+ *  If the login to scp is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ *  If a non-defualt port needs to used, specify it.
+*/
+struct LOCALDataMovement {
+    1: required string dataMovementInterfaceId = DEFAULT_ID,
+}
+
+/**
+ * Authenticate using Secured Shell
+ *
+ * alternativeSSHHostName:
+ *  If the login to ssh is different than the hostname itself, specify it here
+ *
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+*/
+struct SSHJobSubmission {
+    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: required ResourceJobManager resourceJobManager,
+    4: optional string alternativeSSHHostName,
+    5: optional i32 sshPort = 22,
+    6: optional MonitorMode monitorMode,
+}
+
+struct GlobusJobSubmission {
+    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: optional list<string> globusGateKeeperEndPoint
+}
+
+/**
+ * Unicore Job Submission
+ *
+ * unicoreEndPointURL:
+ *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
+ * authenticationMode
+ *  The authenticationMode defines the way certificate is fetched. 
+*/
+struct UnicoreJobSubmission {
+    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: required string unicoreEndPointURL,
+}
+
+
+
+/**
+* Provider name
+**/
+enum ProviderName {
+    EC2,
+    AWSEC2,
+    RACKSPACE
+}
+
+/**
+ * Cloud Job Submission
+ *
+ *
+*/
+struct CloudJobSubmission {
+    1: required string jobSubmissionInterfaceId = DEFAULT_ID,
+    2: required SecurityProtocol securityProtocol,
+    3: required string nodeId,
+    4: required string executableType,
+    5: required ProviderName providerName,
+    6: required string userAccountName
+}
+
+/**
+ * Job Submission Interfaces
+ *
+ * jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
+ *
+ * priorityOrder:
+ *  For resources with multiple interfaces, the priority order should be selected.
+ *   Lower the numerical number, higher the priority
+ *
+*/
+struct JobSubmissionInterface {
+    1: required string jobSubmissionInterfaceId,
+    2: required JobSubmissionProtocol jobSubmissionProtocol
+    3: required i32 priorityOrder = 0,
+}
+
+/**
+ * Data Movement Interfaces
+ *
+ * dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
+ *
+ * priorityOrder:
+ *  For resources with multiple interfaces, the priority order should be selected.
+ *   Lower the numerical number, higher the priority
+ *
+*/
+struct DataMovementInterface {
+    1: required string dataMovementInterfaceId,
+    2: required DataMovementProtocol dataMovementProtocol,
+    3: required i32 priorityOrder = 0,
+}
+
+/**
+ * Computational Resource Description
+ *
+ * computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
+ *
+ * hostName:
+ *   Fully Qualified Host Name.
+ *
+ * hostAliases:
+ *   Aliases if any.
+ *
+ * ipAddress:
+ *   IP Addresses of the Resource.
+ *
+ * resourceDescription:
+ *  A user friendly description of the resource.
+ *
+ * JobSubmissionProtocols:
+ *  A computational resources may have one or more ways of submitting Jobs. This structure
+ *    will hold all available mechanisms to interact with the resource.
+ *  The key is the priority
+ *
+ * DataMovementProtocol:
+ *  Option to specify a prefered data movement mechanism of the available options.
+ *
+ * fileSystems:
+ *  Map of file systems type and the path.
+ *
+*/
+struct ComputeResourceDescription {
+//    1: required bool isEmpty = 0,
+    1: required string computeResourceId = DEFAULT_ID,
+    2: required string hostName,
+    3: optional list<string> hostAliases,
+    4: optional list<string> ipAddresses,
+    5: optional string resourceDescription,
+    6: optional list<BatchQueue> batchQueues,
+    7: optional map<FileSystems, string> fileSystems,
+    8: optional list<JobSubmissionInterface> jobSubmissionInterfaces,
+    9: optional list<DataMovementInterface> dataMovementInterfaces,
+    10: optional i32 maxMemoryPerNode
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index b3ead51..0000000
--- a/thrift-interface-descriptions/airavata-api/experiment-model.thrift
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-include "compute-resource-model.thrift"
-include "application-interface-model.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
-
-/*
- * 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
-}
-
-/**
- * A structure holding the experiment configuration.
- *
- *
-*/
-struct UserConfigurationData {
-    1: required bool airavataAutoSchedule = 0,
-    2: required bool overrideManualScheduledParams = 0,
-    3: optional bool shareExperimentPublicly = 0,
-    4: optional ComputationalResourceScheduling computationalResourceScheduling,
-    5: optional AdvancedInputDataHandling advanceInputDataHandling,
-    6: optional AdvancedOutputDataHandling advanceOutputDataHandling,
-    7: optional QualityOfServiceParams qosParams,
-    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,
-}
-
-/**
- * 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<applicationInterfaceModel.InputDataObjectType> applicationInputs,
-    7: optional list<applicationInterfaceModel.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<applicationInterfaceModel.InputDataObjectType> nodeInputs,
-    7: optional list<applicationInterfaceModel.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:
- *   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 Experiment {
-    1: required string experimentID = DEFAULT_ID,
-    2: required string projectID = DEFAULT_PROJECT_NAME,
-    3: optional i64 creationTime,
-    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<applicationInterfaceModel.InputDataObjectType> experimentInputs,
-    17: optional list<applicationInterfaceModel.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,
-    3: optional i64 creationTime,
-    4: required string userName,
-    5: required string name,
-    6: optional string description,
-    7: optional string applicationId,
-    8: optional ExperimentStatus experimentStatus,
-}
-
-struct ExperimentStatistics {
-    1: required i32 allExperimentCount,
-    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,
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..8896f0d
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/experiment_model.thrift
@@ -0,0 +1,422 @@
+/*
+ * 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.workspace.experiment
+namespace php Airavata.Model.Workspace.Experiment
+namespace cpp apache.airavata.model.workspace.experiment
+namespace py apache.airavata.model.workspace.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
+}
+
+/**
+ * A structure holding the experiment configuration.
+ *
+ *
+*/
+struct UserConfigurationData {
+    1: required bool airavataAutoSchedule = 0,
+    2: required bool overrideManualScheduledParams = 0,
+    3: optional bool shareExperimentPublicly = 0,
+    4: optional ComputationalResourceScheduling computationalResourceScheduling,
+    5: optional AdvancedInputDataHandling advanceInputDataHandling,
+    6: optional AdvancedOutputDataHandling advanceOutputDataHandling,
+    7: optional QualityOfServiceParams qosParams,
+    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,
+}
+
+/**
+ * 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:
+ *   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 Experiment {
+    1: required string experimentID = DEFAULT_ID,
+    2: required string projectID = DEFAULT_PROJECT_NAME,
+    3: optional i64 creationTime,
+    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,
+    3: optional i64 creationTime,
+    4: required string userName,
+    5: required string name,
+    6: optional string description,
+    7: optional string applicationId,
+    8: optional ExperimentStatus experimentStatus,
+}
+
+struct ExperimentStatistics {
+    1: required i32 allExperimentCount,
+    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,
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift b/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift
deleted file mode 100644
index 9045547..0000000
--- a/thrift-interface-descriptions/airavata-api/gateway-resource-profile-model.thrift
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-namespace java org.apache.airavata.model.appcatalog.gatewayprofile
-namespace php Airavata.Model.AppCatalog.GatewayProfile
-namespace cpp apache.airavata.model.appcatalog.gatewayprofile
-namespace py apache.airavata.model.appcatalog.gatewayprofile
-
-include "compute-resource-model.thrift"
-
-/**
- * Gateway specific preferences for a Computer Resource
- *
- * computeResourceId:
- *   Corelate the preference to a compute resource.
- *
- * overridebyAiravata:
- *   If turned true, Airavata will override the preferences of better alternatives exist.
- *
- * loginUserName:
- *   If turned true, Airavata will override the preferences of better alternatives exist.
- *
- * preferredJobSubmissionProtocol:
- *   For resources with multiple job submission protocols, the gateway can pick a preferred option.
- *
- * preferredDataMovementProtocol:
- *   For resources with multiple data movement protocols, the gateway can pick a preferred option.
- *
- * preferredBatchQueue:
- *  Gateways can choose a defualt batch queue based on average job dimention, reservations or other metrics.
- *
- * scratchLocation:
- *  Path to the local scratch space on a HPC cluster. Typically used to create working directory for job execution.
- *
- * allocationProjectNumber:
- *  Typically used on HPC machines to charge computing usage to a account number. For instance, on XSEDE once an
- *    allocation is approved, an allocation number is assigned. Before passing this number with job submittions, the
- *    account to be used has to be added to the allocation.
- *
-*/
-struct ComputeResourcePreference {
-    1: required string computeResourceId,
-    2: required bool overridebyAiravata = 1,
-    3: optional string loginUserName,
-    4: optional computeResourceModel.JobSubmissionProtocol preferredJobSubmissionProtocol,
-    5: optional computeResourceModel.DataMovementProtocol preferredDataMovementProtocol,
-    6: optional string preferredBatchQueue,
-    7: optional string scratchLocation,
-    8: optional string allocationProjectNumber
-}
-
-/**
- * Gateway Resource Profile
- *
- * gatewayID:
- *   Unique identifier for the gateway assigned by Airavata. Corelate this to Airavata Admin API Gateway Registration.
- *
- * computeResourcePreferences:
- *  List of resource preferences for each of the registered compute resources.
- *
- *
-*/
-struct GatewayResourceProfile {
-    1: required string gatewayID,
-    2: optional list<ComputeResourcePreference> computeResourcePreferences
-}


[5/6] airavata git commit: Replaced hyphens with underscores for thrift file names

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index 0a8a677..0000000
--- a/thrift-interface-descriptions/airavata-api/airavata-api.thrift
+++ /dev/null
@@ -1,2079 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Application Programming Interface definition for Apache Airavata Services.
- *   this parent thrift file is contains all service interfaces. The data models are 
- *   described in respective thrift files.
-*/
-
-include "airavata-errors.thrift"
-include "airavata-data-models.thrift"
-include "experiment-model.thrift"
-include "workspace-model.thrift"
-include "compute-resource-model.thrift"
-include "application-deployment-model.thrift"
-include "application-interface-model.thrift"
-include "gateway-resource-profile-model.thrift"
-include "workflow-data-model.thrift"
-include "security-model.thrift"
-
-namespace java org.apache.airavata.api
-namespace php Airavata.API
-namespace cpp apache.airavata.api
-namespace perl ApacheAiravataAPI
-namespace py apache.airavata.api
-namespace js ApacheAiravataAPI
-
-/**
- * Airavata Interface Versions depend upon this Thrift Interface File. When Making changes, please edit the
- *  Version Constants according to Semantic Versioning Specification (SemVer) http://semver.org.
- *
- * Note: The Airavata API version may be different from the Airavata software release versions.
- *
- * The Airavata API version is composed as a dot delimited string with major, minor, and patch level components.
- *
- *  - Major: Incremented for backward incompatible changes. An example would be changes to interfaces.
- *  - Minor: Incremented for backward compatible changes. An example would be the addition of a new optional methods.
- *  - Patch: Incremented for bug fixes. The patch level should be increased for every edit that doesn't result
- *              in a change to major/minor version numbers.
- *
-*/
-const string AIRAVATA_API_VERSION = "0.15.0"
-
-service Airavata {
-
-/**
- * Apache Airavata API Service Methods. For data structures associated in the signatures, please see included thrift files
-*/
-
-  /**
-   * Fetch Apache Airavata API version
-  */
-  string getAPIVersion(1: required securityModel.AuthzToken authzToken)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase,
-                4: airavataErrors.AuthorizationException ae)
-
-  string addGateway(1: required workspaceModel.Gateway gateway)
-         throws (1: airavataErrors.InvalidRequestException ire,
-                 2: airavataErrors.AiravataClientException ace,
-                 3: airavataErrors.AiravataSystemException ase)
-
-  void updateGateway(1: required string gatewayId, 2: required workspaceModel.Gateway updatedGateway)
-         throws (1: airavataErrors.InvalidRequestException ire,
-                 2: airavataErrors.AiravataClientException ace,
-                 3: airavataErrors.AiravataSystemException ase)
-
-  workspaceModel.Gateway getGateway(1: required string gatewayId)
-           throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-  bool deleteGateway(1: required string gatewayId)
-             throws (1: airavataErrors.InvalidRequestException ire,
-                     2: airavataErrors.AiravataClientException ace,
-                     3: airavataErrors.AiravataSystemException ase)
-
-  list<workspaceModel.Gateway> getAllGateways()
-             throws (1: airavataErrors.InvalidRequestException ire,
-                     2: airavataErrors.AiravataClientException ace,
-                     3: airavataErrors.AiravataSystemException ase)
-
-  bool isGatewayExist(1: required string gatewayId)
-           throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-    * Airavata Adminstrative Funcationality
-  **/
-
-
-  /**
-   * Generate and Register SSH Key Pair with Airavata Credential Store.
-   *
-   * @param gatewayId
-   *    The identifier for the requested gateway.
-   *
-   * @param userName
-   *    The User for which the credential should be registered. For community accounts, this user is the name of the
-   *    community user name. For computational resources, this user name need not be the same user name on resoruces.
-   *
-   * @return airavataCredStoreToken
-   *   An SSH Key pair is generated and stored in the credential store and associated with users or community account
-   *   belonging to a gateway.
-   *
-   **/
-
-   string generateAndRegisterSSHKeys (1: required string gatewayId, 2: required string userName)
-           throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-   string getSSHPubKey (1: required string airavataCredStoreToken)
-           throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-   map<string, string> getAllUserSSHPubKeys (1: required string userName)
-           throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Creates a Project with basic metadata.
-   *    A Project is a container of experiments.
-   *
-   * @param gatewayId
-   *    The identifier for the requested gateway.
-   *
-   * @param Project
-   *    The Project Object described in the workspaceModel
-   *
-  */
-  string createProject (1: required string gatewayId,
-                        2: required workspaceModel.Project project)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Project
-   *
-  */
-  void updateProject (1: required string projectId,
-                      2: required workspaceModel.Project updatedProject)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase,
-              4: airavataErrors.ProjectNotFoundException pnfe)
-
-/**
-   * Get a Project by ID
-   *
-  */
-  workspaceModel.Project getProject (1: required string projectId)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase,
-                4: airavataErrors.ProjectNotFoundException pnfe)
-
-  bool deleteProject (1: required string projectId)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase,
-                  4: airavataErrors.ProjectNotFoundException pnfe)
-
- /**
-   * Get all Project by user
-   *
-   * @param gatewayId
-   *    The identifier for the requested gateway.
-   *
-   * @param userName
-   *    The Project Object described in the workspaceModel
-   * @deprecated Instead use getAllUserProjectsWithPagination
- **/
-  list<workspaceModel.Project> getAllUserProjects (1: required string gatewayId,
-                                                   2: required string userName)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
- /**
-   * Get all Project by user with pagination. Results will be ordered based
-   * on creation time DESC
-   *
-   * @param gatewayId
-   *    The identifier for the requested gateway.
-   * @param userName
-   *    The identifier of the user
-   * @param limit
-   *    The amount results to be fetched
-   * @param offset
-   *    The starting point of the results to be fetched
- **/
-  list<workspaceModel.Project> getAllUserProjectsWithPagination (1: required string gatewayId,
-                                                   2: required string userName,
-                                                   3: required i32 limit,
-                                                   4: required i32 offset)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Get all Project for user by project name
-   *
-   * @param gatewayId
-   *    The identifier for the requested gateway.
-   * @param userName
-   *    The identifier of the user
-   * @param projectName
-   *    The name of the project on which the results to be fetched
-   * @deprecated Instead use searchProjectsByProjectNameWithPagination
-   */
-  list<workspaceModel.Project> searchProjectsByProjectName (1: required string gatewayId,
-                        2: required string userName, 3: required string projectName)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Get all Project for user by project name with pagination.Results will be ordered based
-   * on creation time DESC
-   *
-   * @param gatewayId
-   *    The identifier for the requested gateway.
-   * @param userName
-   *    The identifier of the user
-   * @param projectName
-   *    The name of the project on which the results to be fetched
-   * @param limit
-   *    The amount results to be fetched
-   * @param offset
-   *    The starting point of the results to be fetched
-  */
-  list<workspaceModel.Project> searchProjectsByProjectNameWithPagination (1: required string gatewayId,
-                        2: required string userName, 3: required string projectName,4: required i32 limit,
-                        5: required i32 offset)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase)
-
-  /**
-    * Get all Project for user by project description
-    * @param gatewayId
-    *    The identifier for the requested gateway.
-    * @param userName
-    *    The identifier of the user
-    * @param description
-    *    The description to be matched
-    * @deprecated Instead use searchProjectsByProjectDescWithPagination
-  */
-  list<workspaceModel.Project> searchProjectsByProjectDesc (1: required string gatewayId,
-                        2: required string userName, 3: required string description)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-  /**
-    * Search and get all Projects for user by project description with pagination. Results
-    * will be ordered based on creation time DESC
-    *
-    * @param gatewayId
-    *    The identifier for the requested gateway.
-    * @param userName
-    *    The identifier of the user
-    * @param description
-    *    The description to be matched
-    * @param limit
-    *    The amount results to be fetched
-    * @param offset
-    *    The starting point of the results to be fetched
-   */
-  list<workspaceModel.Project> searchProjectsByProjectDescWithPagination (1: required string gatewayId,
-                        2: required string userName, 3: required string description, 4: required i32 limit,
-                        5: required i32 offset)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-    * Search Experiments by experiment name
-    *
-    * @param gatewayId
-    *       Identifier of the requested gateway
-    * @param useNname
-    *       Username of the requested user
-    * @param expName
-    *       Experiment name to be matched
-    * @deprecated
-    *       Instead use searchExperimentsByNameWithPagination
-    *
-    */
-  list<experimentModel.ExperimentSummary> searchExperimentsByName (1: required string gatewayId,
-                          2: required string userName, 3: required string expName)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-  /**
-    * Search Experiments by experiment name with pagination. Results will be sorted
-    * based on creation time DESC
-    *
-    * @param gatewayId
-    *       Identifier of the requested gateway
-    * @param userName
-    *       Username of the requested user
-    * @param expName
-    *       Experiment name to be matched
-    * @param limit
-    *       Amount of results to be fetched
-    * @param offset
-    *       The starting point of the results to be fetched
-    */
-  list<experimentModel.ExperimentSummary> searchExperimentsByNameWithPagination (1: required string gatewayId,
-                          2: required string userName, 3: required string expName, 4: required i32 limit,
-                          5: required i32 offset)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-  /**
-    * Search Experiments by experiment name
-    *
-    * @param gatewayId
-    *       Identifier of the requested gateway
-    * @param userName
-    *       Username of the requested user
-    * @param description
-    *       Experiment description to be matched
-    * @deprecated
-    *       Instead use searchExperimentsByDescWithPagination
-  */
-  list<experimentModel.ExperimentSummary> searchExperimentsByDesc (1: required string gatewayId,
-                            2: required string userName, 3: required string description)
-              throws (1: airavataErrors.InvalidRequestException ire,
-                      2: airavataErrors.AiravataClientException ace,
-                      3: airavataErrors.AiravataSystemException ase)
-
-  /**
-    * Search Experiments by experiment name with pagination. Results will be sorted
-    * based on creation time DESC
-    *
-    * @param gatewayId
-    *       Identifier of the requested gateway
-    * @param userName
-    *       Username of the requested user
-    * @param description
-    *       Experiment description to be matched
-    * @param limit
-    *       Amount of results to be fetched
-    * @param offset
-    *       The starting point of the results to be fetched
-    */
-  list<experimentModel.ExperimentSummary> searchExperimentsByDescWithPagination (1: required string gatewayId,
-                            2: required string userName, 3: required string description, 4: required i32 limit,
-                            5: required i32 offset)
-              throws (1: airavataErrors.InvalidRequestException ire,
-                      2: airavataErrors.AiravataClientException ace,
-                      3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-   * Search Experiments by application id
-   *
-   * @param gatewayId
-   *       Identifier of the requested gateway
-   * @param userName
-   *       Username of the requested user
-   * @param applicationId
-   *       Application id to be matched
-   * @deprecated
-   *       Instead use searchExperimentsByApplicationWithPagination
-   */
-  list<experimentModel.ExperimentSummary> searchExperimentsByApplication (1: required string gatewayId,
-                             2: required string userName, 3: required string applicationId)
-              throws (1: airavataErrors.InvalidRequestException ire,
-                      2: airavataErrors.AiravataClientException ace,
-                      3: airavataErrors.AiravataSystemException ase)
-  /**
-   * Search Experiments by application id with pagination. Results will be sorted
-   * based on creation time DESC
-   *
-   * @param gatewayId
-   *       Identifier of the requested gateway
-   * @param userName
-   *       Username of the requested user
-   * @param applicationId
-   *       Application id to be matched
-   * @param limit
-   *       Amount of results to be fetched
-   * @param offset
-   *       The starting point of the results to be fetched
-   */
-  list<experimentModel.ExperimentSummary> searchExperimentsByApplicationWithPagination (1: required string gatewayId,
-                             2: required string userName, 3: required string applicationId, 4: required i32 limit,
-                             5: required i32 offset)
-              throws (1: airavataErrors.InvalidRequestException ire,
-                      2: airavataErrors.AiravataClientException ace,
-                      3: airavataErrors.AiravataSystemException ase)
-   /**
-    * Search Experiments by experiment status
-    *
-    * @param gatewayId
-    *       Identifier of the requested gateway
-    * @param userName
-    *       Username of the requested user
-    * @param experimentState
-    *       Experiement state to be matched
-    * @deprecated
-    *       Instead use searchExperimentsByStatusWithPagination
-    */
-    list<experimentModel.ExperimentSummary> searchExperimentsByStatus (1: required string gatewayId,
-                            2: required string userName, 3: required experimentModel.ExperimentState experimentState)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Search Experiments by experiment status with pagination. Results will be sorted
-   * based on creation time DESC
-   *
-   * @param gatewayId
-   *       Identifier of the requested gateway
-   * @param userName
-   *       Username of the requested user
-   * @param experimentState
-   *       Experiement state to be matched
-   * @param limit
-   *       Amount of results to be fetched
-   * @param offset
-   *       The starting point of the results to be fetched
-   */
-    list<experimentModel.ExperimentSummary> searchExperimentsByStatusWithPagination (1: required string gatewayId,
-                            2: required string userName, 3: required experimentModel.ExperimentState experimentState,
-                            4: required i32 limit, 5: required i32 offset)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Search Experiments by experiment creation time
-   *
-   * @param gatewayId
-   *       Identifier of the requested gateway
-   * @param userName
-   *       Username of the requested user
-   * @param fromTime
-   *       Start time of the experiments creation time
-   * @param toTime
-   *       End time of the  experiement creation time
-   * @deprecated
-   *       Instead use searchExperimentsByCreationTimeWithPagination
-   */
-    list<experimentModel.ExperimentSummary> searchExperimentsByCreationTime (1: required string gatewayId,
-                            2: required string userName, 3: required i64 fromTime, 4: required i64 toTime)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Search Experiments by experiment creation time with pagination. Results will be sorted
-   * based on creation time DESC
-   *
-   * @param gatewayId
-   *       Identifier of the requested gateway
-   * @param userName
-   *       Username of the requested user
-   * @param fromTime
-   *       Start time of the experiments creation time
-   * @param toTime
-   *       End time of the  experiement creation time
-   * @param limit
-   *       Amount of results to be fetched
-   * @param offset
-   *       The starting point of the results to be fetched
-   */
-    list<experimentModel.ExperimentSummary> 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: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-   * based on creation time DESC
-   *
-   * @param gatewayId
-   *       Identifier of the requested gateway
-   * @param userName
-   *       Username of the requested user
-   * @param filters
-   *       map of multiple filter criteria.
-   * @param limit
-   *       Amount of results to be fetched
-   * @param offset
-   *       The starting point of the results to be fetched
-   */
-    list<experimentModel.ExperimentSummary> searchExperiments(1: required string gatewayId,
-                            2: required string userName, 3: map<experimentModel.ExperimentSearchFields, string> filters,
-                            4: required i32 limit, 5: required i32 offset)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-    /**
-     * Get Experiment Statisitics for the given gateway for a specific time period
-     * @param gatewayId
-     *       Identifier of the requested gateway
-     * @param fromTime
-     *       Starting date time
-     * @param toTime
-     *       Ending data time
-     **/
-    experimentModel.ExperimentStatistics getExperimentStatistics(1: required string gatewayId,
-                            2: required i64 fromTime, 3: required i64 toTime)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-   /**
-    * Get all Experiments within a Project
-    *
-    * @param projectId
-    *       Identifier of the project
-    * @deprecated
-    *       Instead use  getAllExperimentsInProjectWithPagination
-    */
-  list<experimentModel.Experiment> getAllExperimentsInProject(1: required string projectId)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase,
-                  4: airavataErrors.ProjectNotFoundException pnfe)
-
-  /**
-   * Get all Experiments within project with pagination. Results will be sorted
-   * based on creation time DESC
-   *
-   * @param projectId
-   *       Identifier of the project
-   * @param limit
-   *       Amount of results to be fetched
-   * @param offset
-   *       The starting point of the results to be fetched
-   */
-  list<experimentModel.Experiment> getAllExperimentsInProjectWithPagination(1: required string projectId,
-                  2: required i32 limit, 3: required i32 offset)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase,
-                  4: airavataErrors.ProjectNotFoundException pnfe)
-
-
-  /**
-   * Get all Experiments by user
-   *
-   * @param gatewayId
-   *       Identifier of the requesting gateway
-   * @param userName
-   *       Username of the requested user
-   * @deprecated
-   *       Instead use getAllUserExperimentsWithPagination
-   */
-  list<experimentModel.Experiment> getAllUserExperiments(1: required string gatewayId,
-                        2: required string userName)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Get all Experiments by user pagination. Results will be sorted
-   * based on creation time DESC
-   *
-   * @param gatewayId
-   *       Identifier of the requesting gateway
-   * @param userName
-   *       Username of the requested user
-   * @param limit
-   *       Amount of results to be fetched
-   * @param offset
-   *       The starting point of the results to be fetched
-   */
-  list<experimentModel.Experiment> getAllUserExperimentsWithPagination(1: required string gatewayId,
-                        2: required string userName, 3: required i32 limit, 4: required i32 offset)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-  /**
-     * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
-     *   but inferred from the authentication header. This experiment is just a persistent place holder. The client
-     *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
-     *   registering the experiment in a persistent store.
-     *
-     * @param basicExperimentMetadata
-     *    The create experiment will require the basic experiment metadata like the name and description, intended user,
-     *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
-     *      the ExperimentMetadata is a required field.
-     *
-     * @return
-     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
-     *
-     * @throws org.apache.airavata.model.error.InvalidRequestException
-     *    For any incorrect forming of the request itself.
-     *
-     * @throws org.apache.airavata.model.error.AiravataClientException
-     *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-     *
-     *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-     *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
-     *         gateway registration steps and retry this request.
-     *
-     *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-     *         For now this is a place holder.
-     *
-     *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-     *         is implemented, the authorization will be more substantial.
-     *
-     * @throws org.apache.airavata.model.error.AiravataSystemException
-     *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-     *       rather an Airavata Administrator will be notified to take corrective action.
-     *
-    */
-
-  string createExperiment(1: required string gatewayId,
-                          2: required experimentModel.Experiment experiment)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch previously created experiment metadata.
-   *
-   * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
-   *
-   * @return experimentMetada
-   *   This method will return the previously stored experiment metadata.
-   *
-   * @throws org.apache.airavata.model.error.InvalidRequestException
-   *    For any incorrect forming of the request itself.
-   * 
-   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
-   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
-   * @throws org.apache.airavata.model.error.AiravataClientException
-   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
-   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
-   *         gateway registration steps and retry this request.
-   *
-   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-   *         For now this is a place holder.
-   *
-   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-   *         is implemented, the authorization will be more substantial.
-   *
-   * @throws org.apache.airavata.model.error.AiravataSystemException
-   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-   *       rather an Airavata Administrator will be notified to take corrective action.
-   *
-  */
-  experimentModel.Experiment getExperiment(1: required string airavataExperimentId)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.ExperimentNotFoundException enf,
-            3: airavataErrors.AiravataClientException ace,
-            4: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Configure a previously created experiment with required inputs, scheduling and other quality of service
-   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-   *   to make it actionable by the server.
-   *
-   * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
-   *
-   * @param experimentConfigurationData
-   *    The configuration information of the experiment with application input parameters, computational resource scheduling
-   *      information, special input output handling and additional quality of service parameters.
-   *
-   * @return
-   *   This method call does not have a return value.
-   *
-   * @throws org.apache.airavata.model.error.InvalidRequestException
-   *    For any incorrect forming of the request itself.
-   * 
-   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
-   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
-   * @throws org.apache.airavata.model.error.AiravataClientException
-   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
-   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
-   *         gateway registration steps and retry this request.
-   *
-   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-   *         For now this is a place holder.
-   *
-   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-   *         is implemented, the authorization will be more substantial.
-   *
-   * @throws org.apache.airavata.model.error.AiravataSystemException
-   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-   *       rather an Airavata Administrator will be notified to take corrective action.
-   *
-  */
-  void updateExperiment(1: required string airavataExperimentId,
-                        2: required experimentModel.Experiment experiment)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.ExperimentNotFoundException enf,
-            3: airavataErrors.AiravataClientException ace,
-            4: airavataErrors.AiravataSystemException ase)
-
-  void updateExperimentConfiguration(1: required string airavataExperimentId,
-                                     2: required experimentModel.UserConfigurationData userConfiguration)
-
-  void updateResourceScheduleing(1: required string airavataExperimentId,
-                                 2: required experimentModel.ComputationalResourceScheduling resourceScheduling)
-
-    /**
-     *
-     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-     *
-     * @param experimentID
-     * @return sucess/failure
-     *
-    **/
-  bool validateExperiment(1: required string airavataExperimentId)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.ExperimentNotFoundException enf,
-              3: airavataErrors.AiravataClientException ace,
-              4: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-   *   notifications and intermediate and output data will be subsequently available for this experiment.
-   *
-   * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
-   *
-   * @param airavataCredStoreToken:
-   *   A requirement to execute experiments within Airavata is to first register the targeted remote computational account
-   *     credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
-   *     generated token associated with the registered credentials. The client has to security posses this token id and is
-   *     required to pass it to Airavata Server for all execution requests.
-   *   Note: At this point only the credential store token is required so the string is directly passed here. In future if 
-   *     if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
-   *   Note: This parameter is not persisted within Airavata Registry for security reasons.
-   *
-   * @return
-   *   This method call does not have a return value.
-   *
-   * @throws org.apache.airavata.model.error.InvalidRequestException
-   *    For any incorrect forming of the request itself.
-   * 
-   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
-   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
-   * @throws org.apache.airavata.model.error.AiravataClientException
-   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
-   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
-   *         gateway registration steps and retry this request.
-   *
-   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-   *         For now this is a place holder.
-   *
-   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-   *         is implemented, the authorization will be more substantial.
-   *
-   * @throws org.apache.airavata.model.error.AiravataSystemException
-   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-   *       rather an Airavata Administrator will be notified to take corrective action.
-   *
-  */
-  void launchExperiment(1: required string airavataExperimentId
-                        2: required string airavataCredStoreToken)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.ExperimentNotFoundException enf,
-            3: airavataErrors.AiravataClientException ace,
-            4: airavataErrors.AiravataSystemException ase,
-            5: airavataErrors.LaunchValidationException lve)
-
-
-    experimentModel.ExperimentStatus getExperimentStatus(1: required string airavataExperimentId)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.ExperimentNotFoundException enf,
-              3: airavataErrors.AiravataClientException ace,
-              4: airavataErrors.AiravataSystemException ase)
-
-  list<applicationInterfaceModel.OutputDataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.ExperimentNotFoundException enf,
-              3: airavataErrors.AiravataClientException ace,
-              4: airavataErrors.AiravataSystemException ase)
-
-   list<applicationInterfaceModel.OutputDataObjectType> getIntermediateOutputs (1: required string airavataExperimentId)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.ExperimentNotFoundException enf,
-                3: airavataErrors.AiravataClientException ace,
-                4: airavataErrors.AiravataSystemException ase)
-
-
-  map<string, experimentModel.JobStatus> getJobStatuses(1: required string airavataExperimentId)
-              throws (1: airavataErrors.InvalidRequestException ire,
-                      2: airavataErrors.ExperimentNotFoundException enf,
-                      3: airavataErrors.AiravataClientException ace,
-                      4: airavataErrors.AiravataSystemException ase)
-
-  list<experimentModel.JobDetails> getJobDetails(1: required string airavataExperimentId)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.ExperimentNotFoundException enf,
-                        3: airavataErrors.AiravataClientException ace,
-                        4: airavataErrors.AiravataSystemException ase)
-
-  list<experimentModel.DataTransferDetails> getDataTransferDetails(1: required string airavataExperimentId)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.ExperimentNotFoundException enf,
-                        3: airavataErrors.AiravataClientException ace,
-                        4: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
-   *   The client has to subsequently update this configuration if needed and launch the cloned experiment. 
-   *
-   * @param newExperimentName
-   *    experiment name that should be used in the cloned experiment
-   *
-   * @param updatedExperiment
-   *    Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
-   *      the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
-   *      should be shared public by default.
-   *
-   * @return
-   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
-   *
-   * @throws org.apache.airavata.model.error.InvalidRequestException
-   *    For any incorrect forming of the request itself.
-   * 
-   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
-   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
-   * @throws org.apache.airavata.model.error.AiravataClientException
-   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
-   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
-   *         gateway registration steps and retry this request.
-   *
-   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-   *         For now this is a place holder.
-   *
-   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-   *         is implemented, the authorization will be more substantial.
-   *
-   * @throws org.apache.airavata.model.error.AiravataSystemException
-   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-   *       rather an Airavata Administrator will be notified to take corrective action.
-   *
-  */
-  string cloneExperiment(1: string existingExperimentID,
-                         2: string newExperimentName)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.ExperimentNotFoundException enf,
-            3: airavataErrors.AiravataClientException ace,
-            4: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Terminate a running experiment.
-   *
-   * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
-   *
-   * @return
-   *   This method call does not have a return value.
-   *
-   * @throws org.apache.airavata.model.error.InvalidRequestException
-   *    For any incorrect forming of the request itself.
-   * 
-   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
-   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
-   * 
-   * @throws org.apache.airavata.model.error.AiravataClientException
-   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
-   *      
-   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
-   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
-   *         gateway registration steps and retry this request.
-   *
-   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
-   *         For now this is a place holder.
-   *
-   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
-   *         is implemented, the authorization will be more substantial.
-   *
-   * @throws org.apache.airavata.model.error.AiravataSystemException
-   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
-   *       rather an Airavata Administrator will be notified to take corrective action.
-   *
-  */
-  void terminateExperiment(1: string airavataExperimentId, 2: string tokenId)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.ExperimentNotFoundException enf,
-            3: airavataErrors.AiravataClientException ace,
-            4: airavataErrors.AiravataSystemException ase)
-
-/*
- * API definitions for App Catalog related operations
- *
-*/
-
-/*
- * Application Module is a specific computational application. Many applications, particularly scientific applications
- *  are really a suite of applications or encompass an ecosystem. For instance, Amber is referred to dozens of binaries.
- *  WRF is referred for an ecosystem of applications. In this context, we refer to module as a single binary.
- *
- * Note: A module has to be defined before a deployment can be registered.
- *
-*/
-
-  /**
-   * Register a Application Module.
-   *
-   * @param applicationModule
-   *    Application Module Object created from the datamodel.
-   *
-   * @return appModuleId
-   *   Returns a server-side generated airavata appModule globally unique identifier.
-   *
-  */
-  string registerApplicationModule(1: required string gatewayId,
-                        2: required applicationDeploymentModel.ApplicationModule applicationModule)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch a Application Module.
-   *
-   * @param appModuleId
-   *   The identifier for the requested application module
-   *
-   * @return applicationModule
-   *   Returns a application Module Object.
-   *
-  */
-  applicationDeploymentModel.ApplicationModule getApplicationModule(1: required string appModuleId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Application Module.
-   *
-   * @param appModuleId
-   *   The identifier for the requested application module to be updated.
-   *
-   * @param applicationModule
-   *    Application Module Object created from the datamodel.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  bool updateApplicationModule(1: required string appModuleId,
-            2: required applicationDeploymentModel.ApplicationModule applicationModule)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-
-  list<applicationDeploymentModel.ApplicationModule> getAllAppModules (1: required string gatewayId)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete a Application Module.
-   *
-   * @param appModuleId
-   *   The identifier for the requested application module to be deleted.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteApplicationModule(1: required string appModuleId)
-         	throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-/*
- * Application Deployment registers a deployment of a application module on a compute resource
- *
-*/
-
-  /**
-   * Register a Application Deployment.
-   *
-   * @param applicationModule
-   *    Application Module Object created from the datamodel.
-   *
-   * @return appDeploymentId
-   *   Returns a server-side generated airavata appDeployment globally unique identifier.
-   *
-  */
-  string registerApplicationDeployment(1: required string gatewayId,
-                2: required applicationDeploymentModel.ApplicationDeploymentDescription applicationDeployment)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch a Application Deployment.
-   *
-   * @param appDeploymentId
-   *   The identifier for the requested application module
-   *
-   * @return applicationDeployment
-   *   Returns a application Deployment Object.
-   *
-  */
-  applicationDeploymentModel.ApplicationDeploymentDescription getApplicationDeployment(1: required string appDeploymentId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Application Deployment.
-   *
-   * @param appDeploymentId
-   *   The identifier for the requested application deployment to be updated.
-   *
-   * @param appDeployment
-   *    Application Deployment Object created from the datamodel.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  bool updateApplicationDeployment(1: required string appDeploymentId,
-            2: required applicationDeploymentModel.ApplicationDeploymentDescription applicationDeployment)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete a Application deployment.
-   *
-   * @param appDeploymentId
-   *   The identifier for the requested application deployment to be deleted.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteApplicationDeployment(1: required string appDeploymentId)
-         	throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch all Application Deployment Descriptions.
-   *
-   * @return list<applicationDeployment.
-   *   Returns the list of all application Deployment Objects.
-   *
-  */
-  list<applicationDeploymentModel.ApplicationDeploymentDescription> getAllApplicationDeployments(1: required string gatewayId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch a list of Deployed Compute Hosts.
-   *
-   * @param appModuleId
-   *   The identifier for the requested application module
-   *
-   * @return list<string>
-   *   Returns a list of Deployed Resources.
-   *
-  */
-  list<string> getAppModuleDeployedResources(1: required string appModuleId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-/*
- * Application Interface
- *
-*/
-
-  /**
-   * Register a Application Interface.
-   *
-   * @param applicationModule
-   *    Application Module Object created from the datamodel.
-   *
-   * @return appInterfaceId
-   *   Returns a server-side generated airavata application interface globally unique identifier.
-   *
-  */
-  string registerApplicationInterface(1: required string gatewayId,
-                2: required applicationInterfaceModel.ApplicationInterfaceDescription applicationInterface)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch a Application Interface.
-   *
-   * @param appInterfaceId
-   *   The identifier for the requested application module
-   *
-   * @return applicationInterface
-   *   Returns a application Interface Object.
-   *
-   *
-  */
-  applicationInterfaceModel.ApplicationInterfaceDescription getApplicationInterface(1: required string appInterfaceId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Application Interface.
-   *
-   * @param appInterfaceId
-   *   The identifier for the requested application deployment to be updated.
-   *
-   * @param appInterface
-   *    Application Interface Object created from the datamodel.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-   *
-  */
-  bool updateApplicationInterface(1: required string appInterfaceId,
-            2: required applicationInterfaceModel.ApplicationInterfaceDescription applicationInterface)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete a Application Interface.
-   *
-   * @param appInterfaceId
-   *   The identifier for the requested application interface to be deleted.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-   *
-  */
-  bool deleteApplicationInterface(1: required string appInterfaceId)
-         	throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch name and id of  Application Interface documents.
-   *
-   *
-   * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces with corresponsing id's
-   *
-  */
-  map<string, string> getAllApplicationInterfaceNames (1: required string gatewayId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch all Application Interface documents.
-   *
-   *
-   * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces documents
-   *
-  */
-  list<applicationInterfaceModel.ApplicationInterfaceDescription> getAllApplicationInterfaces (1: required string gatewayId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch the list of Application Inputs.
-   *
-   * @param appInterfaceId
-   *   The identifier for the requested application interface
-   *
-   * @return list<applicationInterfaceModel.InputDataObjectType>
-   *   Returns a list of application inputs.
-   *
-  */
-  list<applicationInterfaceModel.InputDataObjectType> getApplicationInputs(1: required string appInterfaceId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch the list of Application Outputs.
-   *
-   * @param appInterfaceId
-   *   The identifier for the requested application interface
-   *
-   * @return list<applicationInterfaceModel.OutputDataObjectType>
-   *   Returns a list of application outputs.
-   *
-  */
-  list<applicationInterfaceModel.OutputDataObjectType> getApplicationOutputs(1: required string appInterfaceId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch a list of all deployed Compute Hosts for a given application interfaces.
-   *
-   * @param appInterfaceId
-   *   The identifier for the requested application interface
-   *
-   * @return map<computeResourceId, computeResourceName>
-   *   A map of registered compute resource id's and their corresponding hostnames.
-   *    Deployments of each modules listed within the interfaces will be listed.
-   *
-  */
-  map<string, string> getAvailableAppInterfaceComputeResources(1: required string appInterfaceId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-/*
- * Compute Resource
- *
-*/
-
-  /**
-   * Register a Compute Resource.
-   *
-   * @param computeResourceDescription
-   *    Compute Resource Object created from the datamodel.
-   *
-   * @return computeResourceId
-   *   Returns a server-side generated airavata compute resource globally unique identifier.
-   *
-  */
-  string registerComputeResource(1: required computeResourceModel.ComputeResourceDescription
-                                            computeResourceDescription)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch the given Compute Resource.
-   *
-   * @param computeResourceId
-   *   The identifier for the requested compute resource
-   *
-   * @return computeResourceDescription
-   *    Compute Resource Object created from the datamodel..
-   *
-  */
-  computeResourceModel.ComputeResourceDescription getComputeResource(1: required string computeResourceId)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch all registered Compute Resources.
-   *
-   * @return A map of registered compute resource id's and thier corresponding hostnames.
-   *    Compute Resource Object created from the datamodel..
-   *
-  */
-  map<string, string> getAllComputeResourceNames()
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Compute Resource.
-   *
-   * @param computeResourceId
-   *   The identifier for the requested compute resource to be updated.
-   *
-   * @param computeResourceDescription
-   *    Compute Resource Object created from the datamodel.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  bool updateComputeResource(1: required string computeResourceId,
-            2: required computeResourceModel.ComputeResourceDescription computeResourceDescription)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete a Compute Resource.
-   *
-   * @param computeResourceId
-   *   The identifier for the requested compute resource to be deleted.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteComputeResource(1: required string computeResourceId)
-         	throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Add a Local Job Submission details to a compute resource
-   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param localSubmission
-   *   The LOCALSubmission object to be added to the resource.
-   *
-   * @return status
-   *   Returns the unique job submission id.
-   *
-  */
-  string addLocalSubmissionDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.LOCALSubmission localSubmission)
-
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update the given Local Job Submission details
-   *
-   * @param jobSubmissionInterfaceId
-   *   The identifier of the JobSubmission Interface to be updated.
-   *
-   * @param localSubmission
-   *   The LOCALSubmission object to be updated.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool updateLocalSubmissionDetails(1: required string jobSubmissionInterfaceId,
-            2: required computeResourceModel.LOCALSubmission localSubmission)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-  * This method returns localJobSubmission object
-  * @param jobSubmissionInterfaceId
-  *   The identifier of the JobSubmission Interface to be retrieved.
-  *  @return LOCALSubmission instance
-  **/
-  computeResourceModel.LOCALSubmission getLocalJobSubmission(1: required string jobSubmissionId)
-            throws (1: airavataErrors.InvalidRequestException ire,
-                    2: airavataErrors.AiravataClientException ace,
-                    3: airavataErrors.AiravataSystemException ase)
-
-
-
-  /**
-   * Add a SSH Job Submission details to a compute resource
-   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param sshJobSubmission
-   *   The SSHJobSubmission object to be added to the resource.
-   *
-   * @return status
-   *   Returns the unique job submission id.
-   *
-  */
-
-
-  string addSSHJobSubmissionDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.SSHJobSubmission sshJobSubmission)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-    /**
-    * This method returns SSHJobSubmission object
-    * @param jobSubmissionInterfaceId
-    *   The identifier of the JobSubmission Interface to be retrieved.
-    *  @return SSHJobSubmission instance
-    **/
-    computeResourceModel.SSHJobSubmission getSSHJobSubmission(1: required string jobSubmissionId)
-              throws (1: airavataErrors.InvalidRequestException ire,
-                      2: airavataErrors.AiravataClientException ace,
-                      3: airavataErrors.AiravataSystemException ase)
-
-
-
-  /**
-   * Add a UNICORE Job Submission details to a compute resource
-   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param unicoreJobSubmission
-   *   The UnicoreJobSubmission object to be added to the resource.
-   *
-   * @return status
-   *  Returns the unique job submission id.
-   *
-  */
-  string addUNICOREJobSubmissionDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.UnicoreJobSubmission unicoreJobSubmission)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-    * This method returns UnicoreJobSubmission object
-    * @param jobSubmissionInterfaceId
-    *   The identifier of the JobSubmission Interface to be retrieved.
-    *  @return UnicoreJobSubmission instance
-  **/
-  computeResourceModel.UnicoreJobSubmission getUnicoreJobSubmission(1: required string jobSubmissionId)
-                throws (1: airavataErrors.InvalidRequestException ire,
-                        2: airavataErrors.AiravataClientException ace,
-                        3: airavataErrors.AiravataSystemException ase)
-
-
- /**
-   * Add a Cloud Job Submission details to a compute resource
-   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param sshJobSubmission
-   *   The SSHJobSubmission object to be added to the resource.
-   *
-   * @return status
-   *   Returns the unique job submission id.
-**/
- string addCloudJobSubmissionDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.CloudJobSubmission cloudSubmission)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
- /**
-    * This method returns cloudJobSubmission object
-    * @param jobSubmissionInterfaceI
-        *   The identifier of the JobSubmission Interface to be retrieved.
-    *  @return CloudJobSubmission instance
- **/
- computeResourceModel.CloudJobSubmission getCloudJobSubmission(1: required string jobSubmissionId)
-                  throws (1: airavataErrors.InvalidRequestException ire,
-                          2: airavataErrors.AiravataClientException ace,
-                          3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update the given SSH Job Submission details
-   *
-   * @param jobSubmissionInterfaceId
-   *   The identifier of the JobSubmission Interface to be updated.
-   *
-   * @param sshJobSubmission
-   *   The SSHJobSubmission object to be updated.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool updateSSHJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
-            2: required computeResourceModel.SSHJobSubmission sshJobSubmission)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-/**
-   * Update the given SSH Job Submission details
-   *
-   * @param jobSubmissionInterfaceId
-   *   The identifier of the JobSubmission Interface to be updated.
-   *
-   * @param cloudJobSubmission
-   *   The CloudJobSubmission object to be updated.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool updateCloudJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
-            2: required computeResourceModel.CloudJobSubmission sshJobSubmission)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  bool updateUnicoreJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
-              2: required computeResourceModel.UnicoreJobSubmission unicoreJobSubmission)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-  /**
-   * Add a Local data movement details to a compute resource
-   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param localDataMovement
-   *   The LOCALDataMovement object to be added to the resource.
-   *
-   * @return status
-   *   Returns the unique job submission id.
-   *
-  */
-  string addLocalDataMovementDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.LOCALDataMovement localDataMovement)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update the given Local data movement details
-   *
-   * @param dataMovementInterfaceId
-   *   The identifier of the data movement Interface to be updated.
-   *
-   * @param localDataMovement
-   *   The LOCALDataMovement object to be updated.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  bool updateLocalDataMovementDetails(1: required string dataMovementInterfaceId,
-            2: required computeResourceModel.LOCALDataMovement localDataMovement)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-          * This method returns local datamovement object
-          * @param dataMovementId
-          *   The identifier of the datamovement Interface to be retrieved.
-          *  @return LOCALDataMovement instance
-  **/
-  computeResourceModel.LOCALDataMovement getLocalDataMovement(1: required string dataMovementId)
-                    throws (1: airavataErrors.InvalidRequestException ire,
-                            2: airavataErrors.AiravataClientException ace,
-                            3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-   * Add a SCP data movement details to a compute resource
-   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param scpDataMovement
-   *   The SCPDataMovement object to be added to the resource.
-   *
-   * @return status
-   *   Returns the unique job submission id.
-   *
-  */
-  string addSCPDataMovementDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.SCPDataMovement scpDataMovement)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update the given scp data movement details
-   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
-   *
-   * @param dataMovementInterfaceId
-   *   The identifier of the data movement Interface to be updated.
-   *
-   * @param scpDataMovement
-   *   The SCPDataMovement object to be updated.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  bool updateSCPDataMovementDetails(1: required string dataMovementInterfaceId,
-            2: required computeResourceModel.SCPDataMovement scpDataMovement)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
- /**
-    * This method returns SCP datamovement object
-    * @param dataMovementId
-       *   The identifier of the datamovement Interface to be retrieved.
-       *  @return SCPDataMovement instance
-  **/
-  computeResourceModel.SCPDataMovement getSCPDataMovement(1: required string dataMovementId)
-                    throws (1: airavataErrors.InvalidRequestException ire,
-                            2: airavataErrors.AiravataClientException ace,
-                            3: airavataErrors.AiravataSystemException ase)
-
-
- string addUnicoreDataMovementDetails(1: required string computeResourceId,
-              2: required i32 priorityOrder,
-              3: required computeResourceModel.UnicoreDataMovement unicoreDataMovement)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
- bool updateUnicoreDataMovementDetails(1: required string dataMovementInterfaceId,
-             2: required computeResourceModel.UnicoreDataMovement unicoreDataMovement)
-   	throws (1: airavataErrors.InvalidRequestException ire,
-             2: airavataErrors.AiravataClientException ace,
-             3: airavataErrors.AiravataSystemException ase)
-
- computeResourceModel.UnicoreDataMovement getUnicoreDataMovement(1: required string dataMovementId)
-                     throws (1: airavataErrors.InvalidRequestException ire,
-                             2: airavataErrors.AiravataClientException ace,
-                             3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Add a GridFTP data movement details to a compute resource
-   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
-   *
-   * @param computeResourceId
-   *   The identifier of the compute resource to which JobSubmission protocol to be added
-   *
-   * @param priorityOrder
-   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
-   *
-   * @param gridFTPDataMovement
-   *   The GridFTPDataMovement object to be added to the resource.
-   *
-   * @return status
-   *   Returns the unique job submission id.
-   *
-  */
-  string addGridFTPDataMovementDetails(1: required string computeResourceId,
-            2: required i32 priorityOrder,
-            3: required computeResourceModel.GridFTPDataMovement gridFTPDataMovement)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update the given GridFTP data movement details to a compute resource
-   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
-   *
-   * @param dataMovementInterfaceId
-   *   The identifier of the data movement Interface to be updated.
-   *
-   * @param gridFTPDataMovement
-   *   The GridFTPDataMovement object to be updated.
-   *
-   * @return status
-   *   Returns a success/failure of the updation.
-   *
-  */
-  bool updateGridFTPDataMovementDetails(1: required string dataMovementInterfaceId,
-            2: required computeResourceModel.GridFTPDataMovement gridFTPDataMovement)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
- /**
-    * This method returns GridFTP datamovement object
-    * @param dataMovementId
-       *   The identifier of the datamovement Interface to be retrieved.
-    *  @return GridFTPDataMovement instance
-  **/
-  computeResourceModel.GridFTPDataMovement getGridFTPDataMovement(1: required string dataMovementId)
-                    throws (1: airavataErrors.InvalidRequestException ire,
-                            2: airavataErrors.AiravataClientException ace,
-                            3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-   * Change the priority of a given job submisison interface
-   *
-   * @param jobSubmissionInterfaceId
-   *   The identifier of the JobSubmission Interface to be changed
-   *
-   * @param priorityOrder
-   *   The new priority of the job manager interface.
-   *
-   * @return status
-   *   Returns a success/failure of the change.
-   *
-  */
-  bool changeJobSubmissionPriority(1: required string jobSubmissionInterfaceId,
-            2: required i32 newPriorityOrder)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Change the priority of a given data movement interface
-   *
-   * @param dataMovementInterfaceId
-   *   The identifier of the DataMovement Interface to be changed
-   *
-   * @param priorityOrder
-   *   The new priority of the data movement interface.
-   *
-   * @return status
-   *   Returns a success/failure of the change.
-   *
-  */
-  bool changeDataMovementPriority(1: required string dataMovementInterfaceId,
-            2: required i32 newPriorityOrder)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Change the priorities of a given set of job submission interfaces
-   *
-   * @param jobSubmissionPriorityMap
-   *   A Map of identifiers of the JobSubmission Interfaces and thier associated priorities to be set.
-   *
-   * @return status
-   *   Returns a success/failure of the changes.
-   *
-  */
-  bool changeJobSubmissionPriorities(1: required map<string, i32> jobSubmissionPriorityMap)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Change the priorities of a given set of data movement interfaces
-   *
-   * @param dataMovementPriorityMap
-   *   A Map of identifiers of the DataMovement Interfaces and thier associated priorities to be set.
-   *
-   * @return status
-   *   Returns a success/failure of the changes.
-   *
-  */
-  bool changeDataMovementPriorities(1: required map<string, i32> dataMovementPriorityMap)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete a given job submisison interface
-   *
-   * @param jobSubmissionInterfaceId
-   *   The identifier of the JobSubmission Interface to be changed
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteJobSubmissionInterface(1: required string computeResourceId, 2: required string jobSubmissionInterfaceId)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete a given data movement interface
-   *
-   * @param dataMovementInterfaceId
-   *   The identifier of the DataMovement Interface to be changed
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteDataMovementInterface(1: required string computeResourceId, 2: required string dataMovementInterfaceId)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
- string registerResourceJobManager(1: required computeResourceModel.ResourceJobManager resourceJobManager)
-    throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
- bool updateResourceJobManager(1: required string resourceJobManagerId, 2: required computeResourceModel.ResourceJobManager updatedResourceJobManager)
-     throws (1: airavataErrors.InvalidRequestException ire,
-             2: airavataErrors.AiravataClientException ace,
-             3: airavataErrors.AiravataSystemException ase)
-
- computeResourceModel.ResourceJobManager getResourceJobManager(1: required string resourceJobManagerId)
-      throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
- bool deleteResourceJobManager(1: required string resourceJobManagerId)
-       throws (1: airavataErrors.InvalidRequestException ire,
-               2: airavataErrors.AiravataClientException ace,
-               3: airavataErrors.AiravataSystemException ase)
-
-  bool deleteBatchQueue(1: required string computeResourceId, 2: required string queueName)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-/*
- * Gateway Resource Profile
- *
-*/
-
-  /**
-   * Register a Gateway Resource Profile.
-   *
-   * @param gatewayResourceProfile
-   *    Gateway Resource Profile Object.
-   *    The GatewayID should be obtained from Airavata gateway registration and passed to register a corresponding
-   *      resource profile.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  string registerGatewayResourceProfile(
-                    1: required gatewayResourceProfileModel.GatewayResourceProfile gatewayResourceProfile)
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch the given Gateway Resource Profile.
-   *
-   * @param gatewayID
-   *   The identifier for the requested gateway resource
-   *
-   * @return gatewayResourceProfile
-   *    Gateway Resource Profile Object.
-   *
-  */
-  gatewayResourceProfileModel.GatewayResourceProfile getGatewayResourceProfile(1: required string gatewayID)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Gateway Resource Profile.
-   *
-   * @param gatewayID
-   *   The identifier for the requested gateway resource to be updated.
-   *
-   * @param gatewayResourceProfile
-   *    Gateway Resource Profile Object.
-   *
-   * @return status
-   *   Returns a success/failure of the update.
-   *
-  */
-  bool updateGatewayResourceProfile(1: required string gatewayID,
-            2: required gatewayResourceProfileModel.GatewayResourceProfile gatewayResourceProfile)
-      	throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.AiravataClientException ace,
-                3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete the given Gateway Resource Profile.
-   *
-   * @param gatewayID
-   *   The identifier for the requested gateway resource to be deleted.
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteGatewayResourceProfile(1: required string gatewayID)
-         	throws (1: airavataErrors.InvalidRequestException ire,
-                   2: airavataErrors.AiravataClientException ace,
-                   3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Add a Compute Resource Preference to a registered gateway profile.
-   *
-   * @param gatewayID
-   *   The identifier for the gateway profile to be added.
-   *
-   * @param computeResourceId
-   *   Preferences related to a particular compute resource
-   *
-   * @param computeResourcePreference
-   *   The ComputeResourcePreference object to be added to the resource profile.
-   *
-   * @return status
-   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
-   *    Instead an update should be used.
-   *
-  */
-  bool addGatewayComputeResourcePreference(1: required string gatewayID,
-            2: required string computeResourceId,
-            3: required gatewayResourceProfileModel.ComputeResourcePreference computeResourcePreference)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch a Compute Resource Preference of a registered gateway profile.
-   *
-   * @param gatewayID
-   *   The identifier for the gateway profile to be requested
-   *
-   * @param computeResourceId
-   *   Preferences related to a particular compute resource
-   *
-   * @return computeResourcePreference
-   *   Returns the ComputeResourcePreference object.
-   *
-  */
-  gatewayResourceProfileModel.ComputeResourcePreference getGatewayComputeResourcePreference(1: required string gatewayID,
-            2: required string computeResourceId)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Fetch all Compute Resource Preferences of a registered gateway profile.
-   *
-   * @param gatewayID
-   *   The identifier for the gateway profile to be requested
-   *
-   * @return computeResourcePreference
-   *   Returns the ComputeResourcePreference object.
-   *
-  */
-  list<gatewayResourceProfileModel.ComputeResourcePreference>
-            getAllGatewayComputeResourcePreferences(1: required string gatewayID)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-
-  /**
-  * Fetch all gateway profiles registered
-  **/
-  list<gatewayResourceProfileModel.GatewayResourceProfile>
-              getAllGatewayComputeResources()
-    	throws (1: airavataErrors.InvalidRequestException ire,
-              2: airavataErrors.AiravataClientException ace,
-              3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Update a Compute Resource Preference to a registered gateway profile.
-   *
-   * @param gatewayID
-   *   The identifier for the gateway profile to be updated.
-   *
-   * @param computeResourceId
-   *   Preferences related to a particular compute resource
-   *
-   * @param computeResourcePreference
-   *   The ComputeResourcePreference object to be updated to the resource profile.
-   *
-   * @return status
-   *   Returns a success/failure of the updation.
-   *
-  */
-  bool updateGatewayComputeResourcePreference(1: required string gatewayID,
-            2: required string computeResourceId,
-            3: required gatewayResourceProfileModel.ComputeResourcePreference computeResourcePreference)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  /**
-   * Delete the Compute Resource Preference of a registered gateway profile.
-   *
-   * @param gatewayID
-   *   The identifier for the gateway profile to be deleted.
-   *
-   * @param computeResourceId
-   *   Preferences related to a particular compute resource
-   *
-   * @return status
-   *   Returns a success/failure of the deletion.
-   *
-  */
-  bool deleteGatewayComputeResourcePreference(1: required string gatewayID,
-            2: required string computeResourceId)
-  	throws (1: airavataErrors.InvalidRequestException ire,
-            2: airavataErrors.AiravataClientException ace,
-            3: airavataErrors.AiravataSystemException ase)
-
-  list<string> getAllWorkflows(1: required string gatewayId)
-          throws (1: airavataErrors.InvalidRequestException ire,
-                  2: airavataErrors.AiravataClientException ace,
-                  3: airavataErrors.AiravataSystemException ase)
-
-  workflowDataModel.Workflow getWorkflow (1: required string workflowTemplateId)
-        throws (1: airavataErrors.InvalidRequestException ire,
-                2: airavataErrors.Aira

<TRUNCATED>

[4/6] airavata git commit: Replaced hyphens with underscores for thrift file names

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift b/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift
deleted file mode 100644
index 2941e00..0000000
--- a/thrift-interface-descriptions/airavata-api/airavata-data-models.thrift
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-include "workspace-model.thrift"
-include "airavata-errors.thrift"
-include "messaging-events.thrift"
-include "security-model.thrift"
-
-namespace java org.apache.airavata.model
-namespace php Airavata.Model
-namespace cpp apache.airavata.model
-namespace py apache.airavata.model
-
-/*
- * This file describes the definitions of the Airavata Execution 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.
-*/
-
-
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
deleted file mode 100644
index 15129c5..0000000
--- a/thrift-interface-descriptions/airavata-api/airavata-errors.thrift
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-/*
-* This file describes the definitions of the Error Messages that can occur
-*  when invoking Apache Airavata Services through the API. In addition Thrift provides
-*  built in funcationality to raise TApplicationException for all internal server errors.
-*/
-
-include "experiment-model.thrift"
-
-namespace java org.apache.airavata.model.error
-namespace php Airavata.API.Error
-namespace cpp apache.airavata.api.error
-namespace perl AiravataAPIError
-namespace py apache.airavata.api.error
-namespace js AiravataAPIError
-
-/**
- * A list of Airavata API Error Message Types
- *
- *  UNKNOWN: No information available about the error
- *   
- *  PERMISSION_DENIED: Not permitted to perform action
- * 
- *  INTERNAL_ERROR: Unexpected problem with the service
- * 
- *  AUTHENTICATION_FAILURE: The client failed to authenticate.
- *
- *  INVALID_AUTHORIZATION: Security Token and/or Username and/or password is incorrect
- *   
- *  AUTHORIZATION_EXPIRED: Authentication token expired
- *  
- *  UNKNOWN_GATEWAY_ID: The gateway is not registered with Airavata.
- * 
- *  UNSUPPORTED_OPERATION: Operation denied because it is currently unsupported.
- */
-
-enum AiravataErrorType {
-  UNKNOWN,
-  PERMISSION_DENIED,
-  INTERNAL_ERROR,
-  AUTHENTICATION_FAILURE,
-  INVALID_AUTHORIZATION,
-  AUTHORIZATION_EXPIRED,
-  UNKNOWN_GATEWAY_ID,
-  UNSUPPORTED_OPERATION
-}
-
-/**
- * This exception is thrown when a client asks to perform an operation on an experiment that does not exist.
- *
- * identifier:  A description of the experiment that was not found on the server.
- *
- * key:  The value passed from the client in the identifier, which was not found.
- */
-exception ExperimentNotFoundException {
-  1: required string message
-  /**
-  * 1:  optional  string identifier,
-  * 2:  optional  string key
-  **/
-}
-
-exception ProjectNotFoundException {
-  1: required string message
-}
-
-/** 
-* This exception is thrown for invalid requests that occur from any reasons like required input parameters are missing, 
-*  or a parameter is malformed.
-* 
-*  message: contains the associated error message.
-*/
-exception InvalidRequestException {
-    1: required string message
-}
-
-
-/** 
-*  This exception is thrown when RPC timeout gets exceeded. 
-*/
-exception TimedOutException {
-}
-
-/** 
-* This exception is thrown for invalid authentication requests.
-* 
-*  message: contains the cause of the authorization failure.
-*/
-exception AuthenticationException {
-    1: required string message
-}
-
-/** 
-* This exception is thrown for invalid authorization requests such user does not have acces to an aplication or resource.
-*
-*  message: contains the authorization failure message
-*/
-exception AuthorizationException {
-    1: required string message
-}
-
-
-/**
- * This exception is thrown by Airavata Services when a call fails as a result of
- * a problem that a client may be able to resolve.  For example, if the user
- * attempts to execute an application on a resource gateway does not have access to.
- *
- * This exception would not be used for internal system errors that do not
- * reflect user actions, but rather reflect a problem within the service that
- * the client cannot resolve.
- *
- * airavataErrorType:  The message type indicating the error that occurred.
- *   must be one of the values of AiravataErrorType.
- *
- * parameter:  If the error applied to a particular input parameter, this will
- *   indicate which parameter.
- */
-exception AiravataClientException {
-  1:  required  AiravataErrorType airavataErrorType,
-  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.
- *
- * airavataErrorType:  The message type indicating the error that occurred.
- *   must be one of the values of AiravataErrorType.
- *
- * message:  This may contain additional information about the error
- *
- */
-exception AiravataSystemException {
-  1:  required  AiravataErrorType airavataErrorType,
-  2:  optional  string message,
-}
-
-


[3/6] airavata git commit: Replaced hyphens with underscores for thrift file names

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/068c18b9/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
new file mode 100644
index 0000000..fc85c1e
--- /dev/null
+++ b/thrift-interface-descriptions/airavata-api/airavata_api.thrift
@@ -0,0 +1,2079 @@
+/*
+ * 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.
+ *
+*/
+
+/**
+ * Application Programming Interface definition for Apache Airavata Services.
+ *   this parent thrift file is contains all service interfaces. The data models are 
+ *   described in respective thrift files.
+*/
+
+include "airavata_errors.thrift"
+include "airavata_data_models.thrift"
+include "experiment_model.thrift"
+include "workspace_model.thrift"
+include "compute_resource_model.thrift"
+include "application_deployment_model.thrift"
+include "application_interface_model.thrift"
+include "gateway_resource_profile_model.thrift"
+include "workflow_data_model.thrift"
+include "security_model.thrift"
+
+namespace java org.apache.airavata.api
+namespace php Airavata.API
+namespace cpp apache.airavata.api
+namespace perl ApacheAiravataAPI
+namespace py apache.airavata.api
+namespace js ApacheAiravataAPI
+
+/**
+ * Airavata Interface Versions depend upon this Thrift Interface File. When Making changes, please edit the
+ *  Version Constants according to Semantic Versioning Specification (SemVer) http://semver.org.
+ *
+ * Note: The Airavata API version may be different from the Airavata software release versions.
+ *
+ * The Airavata API version is composed as a dot delimited string with major, minor, and patch level components.
+ *
+ *  - Major: Incremented for backward incompatible changes. An example would be changes to interfaces.
+ *  - Minor: Incremented for backward compatible changes. An example would be the addition of a new optional methods.
+ *  - Patch: Incremented for bug fixes. The patch level should be increased for every edit that doesn't result
+ *              in a change to major/minor version numbers.
+ *
+*/
+const string AIRAVATA_API_VERSION = "0.15.0"
+
+service Airavata {
+
+/**
+ * Apache Airavata API Service Methods. For data structures associated in the signatures, please see included thrift files
+*/
+
+  /**
+   * Fetch Apache Airavata API version
+  */
+  string getAPIVersion(1: required security_model.AuthzToken authzToken)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.AuthorizationException ae)
+
+  string addGateway(1: required workspace_model.Gateway gateway)
+         throws (1: airavata_errors.InvalidRequestException ire,
+                 2: airavata_errors.AiravataClientException ace,
+                 3: airavata_errors.AiravataSystemException ase)
+
+  void updateGateway(1: required string gatewayId, 2: required workspace_model.Gateway updatedGateway)
+         throws (1: airavata_errors.InvalidRequestException ire,
+                 2: airavata_errors.AiravataClientException ace,
+                 3: airavata_errors.AiravataSystemException ase)
+
+  workspace_model.Gateway getGateway(1: required string gatewayId)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+  bool deleteGateway(1: required string gatewayId)
+             throws (1: airavata_errors.InvalidRequestException ire,
+                     2: airavata_errors.AiravataClientException ace,
+                     3: airavata_errors.AiravataSystemException ase)
+
+  list<workspace_model.Gateway> getAllGateways()
+             throws (1: airavata_errors.InvalidRequestException ire,
+                     2: airavata_errors.AiravataClientException ace,
+                     3: airavata_errors.AiravataSystemException ase)
+
+  bool isGatewayExist(1: required string gatewayId)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+    * Airavata Adminstrative Funcationality
+  **/
+
+
+  /**
+   * Generate and Register SSH Key Pair with Airavata Credential Store.
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   *
+   * @param userName
+   *    The User for which the credential should be registered. For community accounts, this user is the name of the
+   *    community user name. For computational resources, this user name need not be the same user name on resoruces.
+   *
+   * @return airavataCredStoreToken
+   *   An SSH Key pair is generated and stored in the credential store and associated with users or community account
+   *   belonging to a gateway.
+   *
+   **/
+
+   string generateAndRegisterSSHKeys (1: required string gatewayId, 2: required string userName)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+   string getSSHPubKey (1: required string airavataCredStoreToken)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+   map<string, string> getAllUserSSHPubKeys (1: required string userName)
+           throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Creates a Project with basic metadata.
+   *    A Project is a container of experiments.
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   *
+   * @param Project
+   *    The Project Object described in the workspace_model
+   *
+  */
+  string createProject (1: required string gatewayId,
+                        2: required workspace_model.Project project)
+          throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Project
+   *
+  */
+  void updateProject (1: required string projectId,
+                      2: required workspace_model.Project updatedProject)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase,
+              4: airavata_errors.ProjectNotFoundException pnfe)
+
+/**
+   * Get a Project by ID
+   *
+  */
+  workspace_model.Project getProject (1: required string projectId)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase,
+                4: airavata_errors.ProjectNotFoundException pnfe)
+
+  bool deleteProject (1: required string projectId)
+          throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase,
+                  4: airavata_errors.ProjectNotFoundException pnfe)
+
+ /**
+   * Get all Project by user
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   *
+   * @param userName
+   *    The Project Object described in the workspace_model
+   * @deprecated Instead use getAllUserProjectsWithPagination
+ **/
+  list<workspace_model.Project> getAllUserProjects (1: required string gatewayId,
+                                                   2: required string userName)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+ /**
+   * Get all Project by user with pagination. Results will be ordered based
+   * on creation time DESC
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   * @param userName
+   *    The identifier of the user
+   * @param limit
+   *    The amount results to be fetched
+   * @param offset
+   *    The starting point of the results to be fetched
+ **/
+  list<workspace_model.Project> getAllUserProjectsWithPagination (1: required string gatewayId,
+                                                   2: required string userName,
+                                                   3: required i32 limit,
+                                                   4: required i32 offset)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Get all Project for user by project name
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   * @param userName
+   *    The identifier of the user
+   * @param projectName
+   *    The name of the project on which the results to be fetched
+   * @deprecated Instead use searchProjectsByProjectNameWithPagination
+   */
+  list<workspace_model.Project> searchProjectsByProjectName (1: required string gatewayId,
+                        2: required string userName, 3: required string projectName)
+          throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Get all Project for user by project name with pagination.Results will be ordered based
+   * on creation time DESC
+   *
+   * @param gatewayId
+   *    The identifier for the requested gateway.
+   * @param userName
+   *    The identifier of the user
+   * @param projectName
+   *    The name of the project on which the results to be fetched
+   * @param limit
+   *    The amount results to be fetched
+   * @param offset
+   *    The starting point of the results to be fetched
+  */
+  list<workspace_model.Project> searchProjectsByProjectNameWithPagination (1: required string gatewayId,
+                        2: required string userName, 3: required string projectName,4: required i32 limit,
+                        5: required i32 offset)
+          throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase)
+
+  /**
+    * Get all Project for user by project description
+    * @param gatewayId
+    *    The identifier for the requested gateway.
+    * @param userName
+    *    The identifier of the user
+    * @param description
+    *    The description to be matched
+    * @deprecated Instead use searchProjectsByProjectDescWithPagination
+  */
+  list<workspace_model.Project> searchProjectsByProjectDesc (1: required string gatewayId,
+                        2: required string userName, 3: required string description)
+            throws (1: airavata_errors.InvalidRequestException ire,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+  /**
+    * Search and get all Projects for user by project description with pagination. Results
+    * will be ordered based on creation time DESC
+    *
+    * @param gatewayId
+    *    The identifier for the requested gateway.
+    * @param userName
+    *    The identifier of the user
+    * @param description
+    *    The description to be matched
+    * @param limit
+    *    The amount results to be fetched
+    * @param offset
+    *    The starting point of the results to be fetched
+   */
+  list<workspace_model.Project> searchProjectsByProjectDescWithPagination (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,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+    * Search Experiments by experiment name
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param useNname
+    *       Username of the requested user
+    * @param expName
+    *       Experiment name to be matched
+    * @deprecated
+    *       Instead use searchExperimentsByNameWithPagination
+    *
+    */
+  list<experiment_model.ExperimentSummary> searchExperimentsByName (1: required string gatewayId,
+                          2: required string userName, 3: required string expName)
+            throws (1: airavata_errors.InvalidRequestException ire,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+  /**
+    * Search Experiments by experiment name with pagination. Results will be sorted
+    * based on creation time DESC
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param expName
+    *       Experiment name to be matched
+    * @param limit
+    *       Amount of results to be fetched
+    * @param offset
+    *       The starting point of the results to be fetched
+    */
+  list<experiment_model.ExperimentSummary> 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,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+  /**
+    * Search Experiments by experiment name
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param description
+    *       Experiment description to be matched
+    * @deprecated
+    *       Instead use searchExperimentsByDescWithPagination
+  */
+  list<experiment_model.ExperimentSummary> searchExperimentsByDesc (1: required string gatewayId,
+                            2: required string userName, 3: required string description)
+              throws (1: airavata_errors.InvalidRequestException ire,
+                      2: airavata_errors.AiravataClientException ace,
+                      3: airavata_errors.AiravataSystemException ase)
+
+  /**
+    * Search Experiments by experiment name with pagination. Results will be sorted
+    * based on creation time DESC
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param description
+    *       Experiment description to be matched
+    * @param limit
+    *       Amount of results to be fetched
+    * @param offset
+    *       The starting point of the results to be fetched
+    */
+  list<experiment_model.ExperimentSummary> 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,
+                      2: airavata_errors.AiravataClientException ace,
+                      3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+   * Search Experiments by application id
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param applicationId
+   *       Application id to be matched
+   * @deprecated
+   *       Instead use searchExperimentsByApplicationWithPagination
+   */
+  list<experiment_model.ExperimentSummary> searchExperimentsByApplication (1: required string gatewayId,
+                             2: required string userName, 3: required string applicationId)
+              throws (1: airavata_errors.InvalidRequestException ire,
+                      2: airavata_errors.AiravataClientException ace,
+                      3: airavata_errors.AiravataSystemException ase)
+  /**
+   * Search Experiments by application id with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param applicationId
+   *       Application id to be matched
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+  list<experiment_model.ExperimentSummary> 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,
+                      2: airavata_errors.AiravataClientException ace,
+                      3: airavata_errors.AiravataSystemException ase)
+   /**
+    * Search Experiments by experiment status
+    *
+    * @param gatewayId
+    *       Identifier of the requested gateway
+    * @param userName
+    *       Username of the requested user
+    * @param experimentState
+    *       Experiement state to be matched
+    * @deprecated
+    *       Instead use searchExperimentsByStatusWithPagination
+    */
+    list<experiment_model.ExperimentSummary> searchExperimentsByStatus (1: required string gatewayId,
+                            2: required string userName, 3: required experiment_model.ExperimentState experimentState)
+                throws (1: airavata_errors.InvalidRequestException ire,
+                        2: airavata_errors.AiravataClientException ace,
+                        3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Search Experiments by experiment status with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param experimentState
+   *       Experiement state to be matched
+   * @param limit
+   *       Amount of results to be fetched
+   * @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,
+                            4: required i32 limit, 5: required i32 offset)
+                throws (1: airavata_errors.InvalidRequestException ire,
+                        2: airavata_errors.AiravataClientException ace,
+                        3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Search Experiments by experiment creation time
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param fromTime
+   *       Start time of the experiments creation time
+   * @param toTime
+   *       End time of the  experiement creation time
+   * @deprecated
+   *       Instead use searchExperimentsByCreationTimeWithPagination
+   */
+    list<experiment_model.ExperimentSummary> 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,
+                        3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Search Experiments by experiment creation time with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param fromTime
+   *       Start time of the experiments creation time
+   * @param toTime
+   *       End time of the  experiement creation time
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+    list<experiment_model.ExperimentSummary> 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,
+                        2: airavata_errors.AiravataClientException ace,
+                        3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requested gateway
+   * @param userName
+   *       Username of the requested user
+   * @param filters
+   *       map of multiple filter criteria.
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+    list<experiment_model.ExperimentSummary> 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,
+                        2: airavata_errors.AiravataClientException ace,
+                        3: airavata_errors.AiravataSystemException ase)
+
+    /**
+     * Get Experiment Statisitics for the given gateway for a specific time period
+     * @param gatewayId
+     *       Identifier of the requested gateway
+     * @param fromTime
+     *       Starting date time
+     * @param toTime
+     *       Ending data time
+     **/
+    experiment_model.ExperimentStatistics getExperimentStatistics(1: required string gatewayId,
+                            2: required i64 fromTime, 3: required i64 toTime)
+                throws (1: airavata_errors.InvalidRequestException ire,
+                        2: airavata_errors.AiravataClientException ace,
+                        3: airavata_errors.AiravataSystemException ase)
+
+   /**
+    * Get all Experiments within a Project
+    *
+    * @param projectId
+    *       Identifier of the project
+    * @deprecated
+    *       Instead use  getAllExperimentsInProjectWithPagination
+    */
+  list<experiment_model.Experiment> getAllExperimentsInProject(1: required string projectId)
+          throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase,
+                  4: airavata_errors.ProjectNotFoundException pnfe)
+
+  /**
+   * Get all Experiments within project with pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param projectId
+   *       Identifier of the project
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+  list<experiment_model.Experiment> getAllExperimentsInProjectWithPagination(1: required string projectId,
+                  2: required i32 limit, 3: required i32 offset)
+          throws (1: airavata_errors.InvalidRequestException ire,
+                  2: airavata_errors.AiravataClientException ace,
+                  3: airavata_errors.AiravataSystemException ase,
+                  4: airavata_errors.ProjectNotFoundException pnfe)
+
+
+  /**
+   * Get all Experiments by user
+   *
+   * @param gatewayId
+   *       Identifier of the requesting gateway
+   * @param userName
+   *       Username of the requested user
+   * @deprecated
+   *       Instead use getAllUserExperimentsWithPagination
+   */
+  list<experiment_model.Experiment> getAllUserExperiments(1: required string gatewayId,
+                        2: required string userName)
+            throws (1: airavata_errors.InvalidRequestException ire,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Get all Experiments by user pagination. Results will be sorted
+   * based on creation time DESC
+   *
+   * @param gatewayId
+   *       Identifier of the requesting gateway
+   * @param userName
+   *       Username of the requested user
+   * @param limit
+   *       Amount of results to be fetched
+   * @param offset
+   *       The starting point of the results to be fetched
+   */
+  list<experiment_model.Experiment> getAllUserExperimentsWithPagination(1: required string gatewayId,
+                        2: required string userName, 3: required i32 limit, 4: required i32 offset)
+            throws (1: airavata_errors.InvalidRequestException ire,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+  /**
+     * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+     *   but inferred from the authentication header. This experiment is just a persistent place holder. The client
+     *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+     *   registering the experiment in a persistent store.
+     *
+     * @param basicExperimentMetadata
+     *    The create experiment will require the basic experiment metadata like the name and description, intended user,
+     *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+     *      the ExperimentMetadata is a required field.
+     *
+     * @return
+     *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+     *
+     * @throws org.apache.airavata.model.error.InvalidRequestException
+     *    For any incorrect forming of the request itself.
+     *
+     * @throws org.apache.airavata.model.error.AiravataClientException
+     *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+     *
+     *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+     *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+     *         gateway registration steps and retry this request.
+     *
+     *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+     *         For now this is a place holder.
+     *
+     *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+     *         is implemented, the authorization will be more substantial.
+     *
+     * @throws org.apache.airavata.model.error.AiravataSystemException
+     *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+     *       rather an Airavata Administrator will be notified to take corrective action.
+     *
+    */
+
+  string createExperiment(1: required string gatewayId,
+                          2: required experiment_model.Experiment experiment)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch previously created experiment metadata.
+   *
+   * @param airavataExperimentId
+   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *
+   * @return experimentMetada
+   *   This method will return the previously stored experiment metadata.
+   *
+   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *    For any incorrect forming of the request itself.
+   * 
+   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataClientException
+   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   *      
+   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *         gateway registration steps and retry this request.
+   *
+   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *         For now this is a place holder.
+   *
+   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *         is implemented, the authorization will be more substantial.
+   *
+   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *       rather an Airavata Administrator will be notified to take corrective action.
+   *
+  */
+  experiment_model.Experiment getExperiment(1: required string airavataExperimentId)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.ExperimentNotFoundException enf,
+            3: airavata_errors.AiravataClientException ace,
+            4: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Configure a previously created experiment with required inputs, scheduling and other quality of service
+   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
+   *   to make it actionable by the server.
+   *
+   * @param airavataExperimentId
+   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *
+   * @param experimentConfigurationData
+   *    The configuration information of the experiment with application input parameters, computational resource scheduling
+   *      information, special input output handling and additional quality of service parameters.
+   *
+   * @return
+   *   This method call does not have a return value.
+   *
+   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *    For any incorrect forming of the request itself.
+   * 
+   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataClientException
+   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   *      
+   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *         gateway registration steps and retry this request.
+   *
+   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *         For now this is a place holder.
+   *
+   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *         is implemented, the authorization will be more substantial.
+   *
+   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *       rather an Airavata Administrator will be notified to take corrective action.
+   *
+  */
+  void updateExperiment(1: required string airavataExperimentId,
+                        2: required experiment_model.Experiment experiment)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.ExperimentNotFoundException enf,
+            3: airavata_errors.AiravataClientException ace,
+            4: airavata_errors.AiravataSystemException ase)
+
+  void updateExperimentConfiguration(1: required string airavataExperimentId,
+                                     2: required experiment_model.UserConfigurationData userConfiguration)
+
+  void updateResourceScheduleing(1: required string airavataExperimentId,
+                                 2: required experiment_model.ComputationalResourceScheduling resourceScheduling)
+
+    /**
+     *
+     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
+     *
+     * @param experimentID
+     * @return sucess/failure
+     *
+    **/
+  bool validateExperiment(1: required string airavataExperimentId)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.ExperimentNotFoundException enf,
+              3: airavata_errors.AiravataClientException ace,
+              4: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
+   *   notifications and intermediate and output data will be subsequently available for this experiment.
+   *
+   * @param airavataExperimentId
+   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *
+   * @param airavataCredStoreToken:
+   *   A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+   *     credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+   *     generated token associated with the registered credentials. The client has to security posses this token id and is
+   *     required to pass it to Airavata Server for all execution requests.
+   *   Note: At this point only the credential store token is required so the string is directly passed here. In future if 
+   *     if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+   *   Note: This parameter is not persisted within Airavata Registry for security reasons.
+   *
+   * @return
+   *   This method call does not have a return value.
+   *
+   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *    For any incorrect forming of the request itself.
+   * 
+   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataClientException
+   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   *      
+   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *         gateway registration steps and retry this request.
+   *
+   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *         For now this is a place holder.
+   *
+   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *         is implemented, the authorization will be more substantial.
+   *
+   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *       rather an Airavata Administrator will be notified to take corrective action.
+   *
+  */
+  void launchExperiment(1: required string airavataExperimentId
+                        2: required string airavataCredStoreToken)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.ExperimentNotFoundException enf,
+            3: airavata_errors.AiravataClientException ace,
+            4: airavata_errors.AiravataSystemException ase,
+            5: airavata_errors.LaunchValidationException lve)
+
+
+    experiment_model.ExperimentStatus getExperimentStatus(1: required string airavataExperimentId)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.ExperimentNotFoundException enf,
+              3: airavata_errors.AiravataClientException ace,
+              4: airavata_errors.AiravataSystemException ase)
+
+  list<application_interface_model.OutputDataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.ExperimentNotFoundException enf,
+              3: airavata_errors.AiravataClientException ace,
+              4: airavata_errors.AiravataSystemException ase)
+
+   list<application_interface_model.OutputDataObjectType> getIntermediateOutputs (1: required string airavataExperimentId)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.ExperimentNotFoundException enf,
+                3: airavata_errors.AiravataClientException ace,
+                4: airavata_errors.AiravataSystemException ase)
+
+
+  map<string, experiment_model.JobStatus> getJobStatuses(1: required string airavataExperimentId)
+              throws (1: airavata_errors.InvalidRequestException ire,
+                      2: airavata_errors.ExperimentNotFoundException enf,
+                      3: airavata_errors.AiravataClientException ace,
+                      4: airavata_errors.AiravataSystemException ase)
+
+  list<experiment_model.JobDetails> getJobDetails(1: required string airavataExperimentId)
+                throws (1: airavata_errors.InvalidRequestException ire,
+                        2: airavata_errors.ExperimentNotFoundException enf,
+                        3: airavata_errors.AiravataClientException ace,
+                        4: airavata_errors.AiravataSystemException ase)
+
+  list<experiment_model.DataTransferDetails> getDataTransferDetails(1: required string airavataExperimentId)
+                throws (1: airavata_errors.InvalidRequestException ire,
+                        2: airavata_errors.ExperimentNotFoundException enf,
+                        3: airavata_errors.AiravataClientException ace,
+                        4: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+   *   The client has to subsequently update this configuration if needed and launch the cloned experiment. 
+   *
+   * @param newExperimentName
+   *    experiment name that should be used in the cloned experiment
+   *
+   * @param updatedExperiment
+   *    Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+   *      the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+   *      should be shared public by default.
+   *
+   * @return
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+   *
+   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *    For any incorrect forming of the request itself.
+   * 
+   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataClientException
+   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   *      
+   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *         gateway registration steps and retry this request.
+   *
+   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *         For now this is a place holder.
+   *
+   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *         is implemented, the authorization will be more substantial.
+   *
+   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *       rather an Airavata Administrator will be notified to take corrective action.
+   *
+  */
+  string cloneExperiment(1: string existingExperimentID,
+                         2: string newExperimentName)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.ExperimentNotFoundException enf,
+            3: airavata_errors.AiravataClientException ace,
+            4: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Terminate a running experiment.
+   *
+   * @param airavataExperimentId
+   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *
+   * @return
+   *   This method call does not have a return value.
+   *
+   * @throws org.apache.airavata.model.error.InvalidRequestException
+   *    For any incorrect forming of the request itself.
+   * 
+   * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+   *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+   * 
+   * @throws org.apache.airavata.model.error.AiravataClientException
+   *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+   *      
+   *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+   *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+   *         gateway registration steps and retry this request.
+   *
+   *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+   *         For now this is a place holder.
+   *
+   *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+   *         is implemented, the authorization will be more substantial.
+   *
+   * @throws org.apache.airavata.model.error.AiravataSystemException
+   *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+   *       rather an Airavata Administrator will be notified to take corrective action.
+   *
+  */
+  void terminateExperiment(1: string airavataExperimentId, 2: string tokenId)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.ExperimentNotFoundException enf,
+            3: airavata_errors.AiravataClientException ace,
+            4: airavata_errors.AiravataSystemException ase)
+
+/*
+ * API definitions for App Catalog related operations
+ *
+*/
+
+/*
+ * Application Module is a specific computational application. Many applications, particularly scientific applications
+ *  are really a suite of applications or encompass an ecosystem. For instance, Amber is referred to dozens of binaries.
+ *  WRF is referred for an ecosystem of applications. In this context, we refer to module as a single binary.
+ *
+ * Note: A module has to be defined before a deployment can be registered.
+ *
+*/
+
+  /**
+   * Register a Application Module.
+   *
+   * @param applicationModule
+   *    Application Module Object created from the datamodel.
+   *
+   * @return appModuleId
+   *   Returns a server-side generated airavata appModule globally unique identifier.
+   *
+  */
+  string registerApplicationModule(1: required string gatewayId,
+                        2: required application_deployment_model.ApplicationModule applicationModule)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch a Application Module.
+   *
+   * @param appModuleId
+   *   The identifier for the requested application module
+   *
+   * @return applicationModule
+   *   Returns a application Module Object.
+   *
+  */
+  application_deployment_model.ApplicationModule getApplicationModule(1: required string appModuleId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Application Module.
+   *
+   * @param appModuleId
+   *   The identifier for the requested application module to be updated.
+   *
+   * @param applicationModule
+   *    Application Module Object created from the datamodel.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  bool updateApplicationModule(1: required string appModuleId,
+            2: required application_deployment_model.ApplicationModule applicationModule)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+
+  list<application_deployment_model.ApplicationModule> getAllAppModules (1: required string gatewayId)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete a Application Module.
+   *
+   * @param appModuleId
+   *   The identifier for the requested application module to be deleted.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteApplicationModule(1: required string appModuleId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+/*
+ * Application Deployment registers a deployment of a application module on a compute resource
+ *
+*/
+
+  /**
+   * Register a Application Deployment.
+   *
+   * @param applicationModule
+   *    Application Module Object created from the datamodel.
+   *
+   * @return appDeploymentId
+   *   Returns a server-side generated airavata appDeployment globally unique identifier.
+   *
+  */
+  string registerApplicationDeployment(1: required string gatewayId,
+                2: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch a Application Deployment.
+   *
+   * @param appDeploymentId
+   *   The identifier for the requested application module
+   *
+   * @return applicationDeployment
+   *   Returns a application Deployment Object.
+   *
+  */
+  application_deployment_model.ApplicationDeploymentDescription getApplicationDeployment(1: required string appDeploymentId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Application Deployment.
+   *
+   * @param appDeploymentId
+   *   The identifier for the requested application deployment to be updated.
+   *
+   * @param appDeployment
+   *    Application Deployment Object created from the datamodel.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  bool updateApplicationDeployment(1: required string appDeploymentId,
+            2: required application_deployment_model.ApplicationDeploymentDescription applicationDeployment)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete a Application deployment.
+   *
+   * @param appDeploymentId
+   *   The identifier for the requested application deployment to be deleted.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteApplicationDeployment(1: required string appDeploymentId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch all Application Deployment Descriptions.
+   *
+   * @return list<applicationDeployment.
+   *   Returns the list of all application Deployment Objects.
+   *
+  */
+  list<application_deployment_model.ApplicationDeploymentDescription> getAllApplicationDeployments(1: required string gatewayId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch a list of Deployed Compute Hosts.
+   *
+   * @param appModuleId
+   *   The identifier for the requested application module
+   *
+   * @return list<string>
+   *   Returns a list of Deployed Resources.
+   *
+  */
+  list<string> getAppModuleDeployedResources(1: required string appModuleId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+/*
+ * Application Interface
+ *
+*/
+
+  /**
+   * Register a Application Interface.
+   *
+   * @param applicationModule
+   *    Application Module Object created from the datamodel.
+   *
+   * @return appInterfaceId
+   *   Returns a server-side generated airavata application interface globally unique identifier.
+   *
+  */
+  string registerApplicationInterface(1: required string gatewayId,
+                2: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch a Application Interface.
+   *
+   * @param appInterfaceId
+   *   The identifier for the requested application module
+   *
+   * @return applicationInterface
+   *   Returns a application Interface Object.
+   *
+   *
+  */
+  application_interface_model.ApplicationInterfaceDescription getApplicationInterface(1: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Application Interface.
+   *
+   * @param appInterfaceId
+   *   The identifier for the requested application deployment to be updated.
+   *
+   * @param appInterface
+   *    Application Interface Object created from the datamodel.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+   *
+  */
+  bool updateApplicationInterface(1: required string appInterfaceId,
+            2: required application_interface_model.ApplicationInterfaceDescription applicationInterface)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete a Application Interface.
+   *
+   * @param appInterfaceId
+   *   The identifier for the requested application interface to be deleted.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+   *
+  */
+  bool deleteApplicationInterface(1: required string appInterfaceId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch name and id of  Application Interface documents.
+   *
+   *
+   * @return map<applicationId, applicationInterfaceNames>
+   *   Returns a list of application interfaces with corresponsing id's
+   *
+  */
+  map<string, string> getAllApplicationInterfaceNames (1: required string gatewayId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch all Application Interface documents.
+   *
+   *
+   * @return map<applicationId, applicationInterfaceNames>
+   *   Returns a list of application interfaces documents
+   *
+  */
+  list<application_interface_model.ApplicationInterfaceDescription> getAllApplicationInterfaces (1: required string gatewayId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch the list of Application Inputs.
+   *
+   * @param appInterfaceId
+   *   The identifier for the requested application interface
+   *
+   * @return list<application_interface_model.InputDataObjectType>
+   *   Returns a list of application inputs.
+   *
+  */
+  list<application_interface_model.InputDataObjectType> getApplicationInputs(1: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch the list of Application Outputs.
+   *
+   * @param appInterfaceId
+   *   The identifier for the requested application interface
+   *
+   * @return list<application_interface_model.OutputDataObjectType>
+   *   Returns a list of application outputs.
+   *
+  */
+  list<application_interface_model.OutputDataObjectType> getApplicationOutputs(1: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch a list of all deployed Compute Hosts for a given application interfaces.
+   *
+   * @param appInterfaceId
+   *   The identifier for the requested application interface
+   *
+   * @return map<computeResourceId, computeResourceName>
+   *   A map of registered compute resource id's and their corresponding hostnames.
+   *    Deployments of each modules listed within the interfaces will be listed.
+   *
+  */
+  map<string, string> getAvailableAppInterfaceComputeResources(1: required string appInterfaceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+/*
+ * Compute Resource
+ *
+*/
+
+  /**
+   * Register a Compute Resource.
+   *
+   * @param computeResourceDescription
+   *    Compute Resource Object created from the datamodel.
+   *
+   * @return computeResourceId
+   *   Returns a server-side generated airavata compute resource globally unique identifier.
+   *
+  */
+  string registerComputeResource(1: required compute_resource_model.ComputeResourceDescription
+                                            computeResourceDescription)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch the given Compute Resource.
+   *
+   * @param computeResourceId
+   *   The identifier for the requested compute resource
+   *
+   * @return computeResourceDescription
+   *    Compute Resource Object created from the datamodel..
+   *
+  */
+  compute_resource_model.ComputeResourceDescription getComputeResource(1: required string computeResourceId)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch all registered Compute Resources.
+   *
+   * @return A map of registered compute resource id's and thier corresponding hostnames.
+   *    Compute Resource Object created from the datamodel..
+   *
+  */
+  map<string, string> getAllComputeResourceNames()
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Compute Resource.
+   *
+   * @param computeResourceId
+   *   The identifier for the requested compute resource to be updated.
+   *
+   * @param computeResourceDescription
+   *    Compute Resource Object created from the datamodel.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  bool updateComputeResource(1: required string computeResourceId,
+            2: required compute_resource_model.ComputeResourceDescription computeResourceDescription)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete a Compute Resource.
+   *
+   * @param computeResourceId
+   *   The identifier for the requested compute resource to be deleted.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteComputeResource(1: required string computeResourceId)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Add a Local Job Submission details to a compute resource
+   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param localSubmission
+   *   The LOCALSubmission object to be added to the resource.
+   *
+   * @return status
+   *   Returns the unique job submission id.
+   *
+  */
+  string addLocalSubmissionDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.LOCALSubmission localSubmission)
+
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update the given Local Job Submission details
+   *
+   * @param jobSubmissionInterfaceId
+   *   The identifier of the JobSubmission Interface to be updated.
+   *
+   * @param localSubmission
+   *   The LOCALSubmission object to be updated.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool updateLocalSubmissionDetails(1: required string jobSubmissionInterfaceId,
+            2: required compute_resource_model.LOCALSubmission localSubmission)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+  * This method returns localJobSubmission object
+  * @param jobSubmissionInterfaceId
+  *   The identifier of the JobSubmission Interface to be retrieved.
+  *  @return LOCALSubmission instance
+  **/
+  compute_resource_model.LOCALSubmission getLocalJobSubmission(1: required string jobSubmissionId)
+            throws (1: airavata_errors.InvalidRequestException ire,
+                    2: airavata_errors.AiravataClientException ace,
+                    3: airavata_errors.AiravataSystemException ase)
+
+
+
+  /**
+   * Add a SSH Job Submission details to a compute resource
+   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param sshJobSubmission
+   *   The SSHJobSubmission object to be added to the resource.
+   *
+   * @return status
+   *   Returns the unique job submission id.
+   *
+  */
+
+
+  string addSSHJobSubmissionDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.SSHJobSubmission sshJobSubmission)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+    /**
+    * This method returns SSHJobSubmission object
+    * @param jobSubmissionInterfaceId
+    *   The identifier of the JobSubmission Interface to be retrieved.
+    *  @return SSHJobSubmission instance
+    **/
+    compute_resource_model.SSHJobSubmission getSSHJobSubmission(1: required string jobSubmissionId)
+              throws (1: airavata_errors.InvalidRequestException ire,
+                      2: airavata_errors.AiravataClientException ace,
+                      3: airavata_errors.AiravataSystemException ase)
+
+
+
+  /**
+   * Add a UNICORE Job Submission details to a compute resource
+   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param unicoreJobSubmission
+   *   The UnicoreJobSubmission object to be added to the resource.
+   *
+   * @return status
+   *  Returns the unique job submission id.
+   *
+  */
+  string addUNICOREJobSubmissionDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.UnicoreJobSubmission unicoreJobSubmission)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+    * This method returns UnicoreJobSubmission object
+    * @param jobSubmissionInterfaceId
+    *   The identifier of the JobSubmission Interface to be retrieved.
+    *  @return UnicoreJobSubmission instance
+  **/
+  compute_resource_model.UnicoreJobSubmission getUnicoreJobSubmission(1: required string jobSubmissionId)
+                throws (1: airavata_errors.InvalidRequestException ire,
+                        2: airavata_errors.AiravataClientException ace,
+                        3: airavata_errors.AiravataSystemException ase)
+
+
+ /**
+   * Add a Cloud Job Submission details to a compute resource
+   *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param sshJobSubmission
+   *   The SSHJobSubmission object to be added to the resource.
+   *
+   * @return status
+   *   Returns the unique job submission id.
+**/
+ string addCloudJobSubmissionDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.CloudJobSubmission cloudSubmission)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+ /**
+    * This method returns cloudJobSubmission object
+    * @param jobSubmissionInterfaceI
+        *   The identifier of the JobSubmission Interface to be retrieved.
+    *  @return CloudJobSubmission instance
+ **/
+ compute_resource_model.CloudJobSubmission getCloudJobSubmission(1: required string jobSubmissionId)
+                  throws (1: airavata_errors.InvalidRequestException ire,
+                          2: airavata_errors.AiravataClientException ace,
+                          3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update the given SSH Job Submission details
+   *
+   * @param jobSubmissionInterfaceId
+   *   The identifier of the JobSubmission Interface to be updated.
+   *
+   * @param sshJobSubmission
+   *   The SSHJobSubmission object to be updated.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool updateSSHJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+            2: required compute_resource_model.SSHJobSubmission sshJobSubmission)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+/**
+   * Update the given SSH Job Submission details
+   *
+   * @param jobSubmissionInterfaceId
+   *   The identifier of the JobSubmission Interface to be updated.
+   *
+   * @param cloudJobSubmission
+   *   The CloudJobSubmission object to be updated.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool updateCloudJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+            2: required compute_resource_model.CloudJobSubmission sshJobSubmission)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  bool updateUnicoreJobSubmissionDetails(1: required string jobSubmissionInterfaceId,
+              2: required compute_resource_model.UnicoreJobSubmission unicoreJobSubmission)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+  /**
+   * Add a Local data movement details to a compute resource
+   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param localDataMovement
+   *   The LOCALDataMovement object to be added to the resource.
+   *
+   * @return status
+   *   Returns the unique job submission id.
+   *
+  */
+  string addLocalDataMovementDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.LOCALDataMovement localDataMovement)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update the given Local data movement details
+   *
+   * @param dataMovementInterfaceId
+   *   The identifier of the data movement Interface to be updated.
+   *
+   * @param localDataMovement
+   *   The LOCALDataMovement object to be updated.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  bool updateLocalDataMovementDetails(1: required string dataMovementInterfaceId,
+            2: required compute_resource_model.LOCALDataMovement localDataMovement)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+          * This method returns local datamovement object
+          * @param dataMovementId
+          *   The identifier of the datamovement Interface to be retrieved.
+          *  @return LOCALDataMovement instance
+  **/
+  compute_resource_model.LOCALDataMovement getLocalDataMovement(1: required string dataMovementId)
+                    throws (1: airavata_errors.InvalidRequestException ire,
+                            2: airavata_errors.AiravataClientException ace,
+                            3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+   * Add a SCP data movement details to a compute resource
+   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param scpDataMovement
+   *   The SCPDataMovement object to be added to the resource.
+   *
+   * @return status
+   *   Returns the unique job submission id.
+   *
+  */
+  string addSCPDataMovementDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.SCPDataMovement scpDataMovement)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update the given scp data movement details
+   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+   *
+   * @param dataMovementInterfaceId
+   *   The identifier of the data movement Interface to be updated.
+   *
+   * @param scpDataMovement
+   *   The SCPDataMovement object to be updated.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  bool updateSCPDataMovementDetails(1: required string dataMovementInterfaceId,
+            2: required compute_resource_model.SCPDataMovement scpDataMovement)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+ /**
+    * This method returns SCP datamovement object
+    * @param dataMovementId
+       *   The identifier of the datamovement Interface to be retrieved.
+       *  @return SCPDataMovement instance
+  **/
+  compute_resource_model.SCPDataMovement getSCPDataMovement(1: required string dataMovementId)
+                    throws (1: airavata_errors.InvalidRequestException ire,
+                            2: airavata_errors.AiravataClientException ace,
+                            3: airavata_errors.AiravataSystemException ase)
+
+
+ string addUnicoreDataMovementDetails(1: required string computeResourceId,
+              2: required i32 priorityOrder,
+              3: required compute_resource_model.UnicoreDataMovement unicoreDataMovement)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+ bool updateUnicoreDataMovementDetails(1: required string dataMovementInterfaceId,
+             2: required compute_resource_model.UnicoreDataMovement unicoreDataMovement)
+   	throws (1: airavata_errors.InvalidRequestException ire,
+             2: airavata_errors.AiravataClientException ace,
+             3: airavata_errors.AiravataSystemException ase)
+
+ compute_resource_model.UnicoreDataMovement getUnicoreDataMovement(1: required string dataMovementId)
+                     throws (1: airavata_errors.InvalidRequestException ire,
+                             2: airavata_errors.AiravataClientException ace,
+                             3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Add a GridFTP data movement details to a compute resource
+   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+   *
+   * @param computeResourceId
+   *   The identifier of the compute resource to which JobSubmission protocol to be added
+   *
+   * @param priorityOrder
+   *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+   *
+   * @param gridFTPDataMovement
+   *   The GridFTPDataMovement object to be added to the resource.
+   *
+   * @return status
+   *   Returns the unique job submission id.
+   *
+  */
+  string addGridFTPDataMovementDetails(1: required string computeResourceId,
+            2: required i32 priorityOrder,
+            3: required compute_resource_model.GridFTPDataMovement gridFTPDataMovement)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update the given GridFTP data movement details to a compute resource
+   *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+   *
+   * @param dataMovementInterfaceId
+   *   The identifier of the data movement Interface to be updated.
+   *
+   * @param gridFTPDataMovement
+   *   The GridFTPDataMovement object to be updated.
+   *
+   * @return status
+   *   Returns a success/failure of the updation.
+   *
+  */
+  bool updateGridFTPDataMovementDetails(1: required string dataMovementInterfaceId,
+            2: required compute_resource_model.GridFTPDataMovement gridFTPDataMovement)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+ /**
+    * This method returns GridFTP datamovement object
+    * @param dataMovementId
+       *   The identifier of the datamovement Interface to be retrieved.
+    *  @return GridFTPDataMovement instance
+  **/
+  compute_resource_model.GridFTPDataMovement getGridFTPDataMovement(1: required string dataMovementId)
+                    throws (1: airavata_errors.InvalidRequestException ire,
+                            2: airavata_errors.AiravataClientException ace,
+                            3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+   * Change the priority of a given job submisison interface
+   *
+   * @param jobSubmissionInterfaceId
+   *   The identifier of the JobSubmission Interface to be changed
+   *
+   * @param priorityOrder
+   *   The new priority of the job manager interface.
+   *
+   * @return status
+   *   Returns a success/failure of the change.
+   *
+  */
+  bool changeJobSubmissionPriority(1: required string jobSubmissionInterfaceId,
+            2: required i32 newPriorityOrder)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Change the priority of a given data movement interface
+   *
+   * @param dataMovementInterfaceId
+   *   The identifier of the DataMovement Interface to be changed
+   *
+   * @param priorityOrder
+   *   The new priority of the data movement interface.
+   *
+   * @return status
+   *   Returns a success/failure of the change.
+   *
+  */
+  bool changeDataMovementPriority(1: required string dataMovementInterfaceId,
+            2: required i32 newPriorityOrder)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Change the priorities of a given set of job submission interfaces
+   *
+   * @param jobSubmissionPriorityMap
+   *   A Map of identifiers of the JobSubmission Interfaces and thier associated priorities to be set.
+   *
+   * @return status
+   *   Returns a success/failure of the changes.
+   *
+  */
+  bool changeJobSubmissionPriorities(1: required map<string, i32> jobSubmissionPriorityMap)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Change the priorities of a given set of data movement interfaces
+   *
+   * @param dataMovementPriorityMap
+   *   A Map of identifiers of the DataMovement Interfaces and thier associated priorities to be set.
+   *
+   * @return status
+   *   Returns a success/failure of the changes.
+   *
+  */
+  bool changeDataMovementPriorities(1: required map<string, i32> dataMovementPriorityMap)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete a given job submisison interface
+   *
+   * @param jobSubmissionInterfaceId
+   *   The identifier of the JobSubmission Interface to be changed
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteJobSubmissionInterface(1: required string computeResourceId, 2: required string jobSubmissionInterfaceId)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete a given data movement interface
+   *
+   * @param dataMovementInterfaceId
+   *   The identifier of the DataMovement Interface to be changed
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteDataMovementInterface(1: required string computeResourceId, 2: required string dataMovementInterfaceId)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+ string registerResourceJobManager(1: required compute_resource_model.ResourceJobManager resourceJobManager)
+    throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+ bool updateResourceJobManager(1: required string resourceJobManagerId, 2: required compute_resource_model.ResourceJobManager updatedResourceJobManager)
+     throws (1: airavata_errors.InvalidRequestException ire,
+             2: airavata_errors.AiravataClientException ace,
+             3: airavata_errors.AiravataSystemException ase)
+
+ compute_resource_model.ResourceJobManager getResourceJobManager(1: required string resourceJobManagerId)
+      throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+ bool deleteResourceJobManager(1: required string resourceJobManagerId)
+       throws (1: airavata_errors.InvalidRequestException ire,
+               2: airavata_errors.AiravataClientException ace,
+               3: airavata_errors.AiravataSystemException ase)
+
+  bool deleteBatchQueue(1: required string computeResourceId, 2: required string queueName)
+        throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+/*
+ * Gateway Resource Profile
+ *
+*/
+
+  /**
+   * Register a Gateway Resource Profile.
+   *
+   * @param gatewayResourceProfile
+   *    Gateway Resource Profile Object.
+   *    The GatewayID should be obtained from Airavata gateway registration and passed to register a corresponding
+   *      resource profile.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  string registerGatewayResourceProfile(
+                    1: required gateway_resource_profile_model.GatewayResourceProfile gatewayResourceProfile)
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch the given Gateway Resource Profile.
+   *
+   * @param gatewayID
+   *   The identifier for the requested gateway resource
+   *
+   * @return gatewayResourceProfile
+   *    Gateway Resource Profile Object.
+   *
+  */
+  gateway_resource_profile_model.GatewayResourceProfile getGatewayResourceProfile(1: required string gatewayID)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Gateway Resource Profile.
+   *
+   * @param gatewayID
+   *   The identifier for the requested gateway resource to be updated.
+   *
+   * @param gatewayResourceProfile
+   *    Gateway Resource Profile Object.
+   *
+   * @return status
+   *   Returns a success/failure of the update.
+   *
+  */
+  bool updateGatewayResourceProfile(1: required string gatewayID,
+            2: required gateway_resource_profile_model.GatewayResourceProfile gatewayResourceProfile)
+      	throws (1: airavata_errors.InvalidRequestException ire,
+                2: airavata_errors.AiravataClientException ace,
+                3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete the given Gateway Resource Profile.
+   *
+   * @param gatewayID
+   *   The identifier for the requested gateway resource to be deleted.
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteGatewayResourceProfile(1: required string gatewayID)
+         	throws (1: airavata_errors.InvalidRequestException ire,
+                   2: airavata_errors.AiravataClientException ace,
+                   3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Add a Compute Resource Preference to a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier for the gateway profile to be added.
+   *
+   * @param computeResourceId
+   *   Preferences related to a particular compute resource
+   *
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be added to the resource profile.
+   *
+   * @return status
+   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+   *    Instead an update should be used.
+   *
+  */
+  bool addGatewayComputeResourcePreference(1: required string gatewayID,
+            2: required string computeResourceId,
+            3: required gateway_resource_profile_model.ComputeResourcePreference computeResourcePreference)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch a Compute Resource Preference of a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier for the gateway profile to be requested
+   *
+   * @param computeResourceId
+   *   Preferences related to a particular compute resource
+   *
+   * @return computeResourcePreference
+   *   Returns the ComputeResourcePreference object.
+   *
+  */
+  gateway_resource_profile_model.ComputeResourcePreference getGatewayComputeResourcePreference(1: required string gatewayID,
+            2: required string computeResourceId)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Fetch all Compute Resource Preferences of a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier for the gateway profile to be requested
+   *
+   * @return computeResourcePreference
+   *   Returns the ComputeResourcePreference object.
+   *
+  */
+  list<gateway_resource_profile_model.ComputeResourcePreference>
+            getAllGatewayComputeResourcePreferences(1: required string gatewayID)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+
+  /**
+  * Fetch all gateway profiles registered
+  **/
+  list<gateway_resource_profile_model.GatewayResourceProfile>
+              getAllGatewayComputeResources()
+    	throws (1: airavata_errors.InvalidRequestException ire,
+              2: airavata_errors.AiravataClientException ace,
+              3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Update a Compute Resource Preference to a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier for the gateway profile to be updated.
+   *
+   * @param computeResourceId
+   *   Preferences related to a particular compute resource
+   *
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be updated to the resource profile.
+   *
+   * @return status
+   *   Returns a success/failure of the updation.
+   *
+  */
+  bool updateGatewayComputeResourcePreference(1: required string gatewayID,
+            2: required string computeResourceId,
+            3: required gateway_resource_profile_model.ComputeResourcePreference computeResourcePreference)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.AiravataClientException ace,
+            3: airavata_errors.AiravataSystemException ase)
+
+  /**
+   * Delete the Compute Resource Preference of a registered gateway profile.
+   *
+   * @param gatewayID
+   *   The identifier for the gateway profile to be deleted.
+   *
+   * @param computeResourceId
+   *   Preferences related to a particular compute resource
+   *
+   * @return status
+   *   Returns a success/failure of the deletion.
+   *
+  */
+  bool deleteGatewayComputeResourcePreference(1: required string gatewayID,
+            2: required string computeResourceId)
+  	throws (1: airavata_errors.InvalidRequestException ire,
+            2: airavata_errors.Air

<TRUNCATED>