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