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:24 UTC
[2/6] airavata git commit: Replaced hyphens with underscores for
thrift file names
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
-}