This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch feat/thrift-server-extraction in repository https://gitbox.apache.org/repos/asf/airavata.git
commit e98b569f96cdbe44123ad78e2f8fd750cf43b753 Author: yasithdev <[email protected]> AuthorDate: Thu Mar 26 14:13:17 2026 -0500 feat: add proto definitions mirroring all thrift IDL data models 33 proto3 files covering all thrift data-models, API commons, security, errors, messaging, and db events. Mechanical 1:1 translation preserving field numbers and structure. --- .../accountprovisioning/account_provisioning.proto | 43 ++++ .../appcatalog/appdeployment/app_deployment.proto | 103 ++++++++ .../appcatalog/appinterface/app_interface.proto | 52 +++++ .../computeresource/compute_resource.proto | 259 +++++++++++++++++++++ .../appcatalog/gatewaygroups/gateway_groups.proto | 30 +++ .../gatewayprofile/gateway_profile.proto | 62 +++++ .../group_resource_profile.proto | 114 +++++++++ .../airavata/model/appcatalog/parser/parser.proto | 88 +++++++ .../storageresource/storage_resource.proto | 79 +++++++ .../user_resource_profile.proto | 54 +++++ .../model/application/io/application_io.proto | 90 +++++++ .../apache/airavata/model/commons/commons.proto | 46 ++++ .../model/credential/store/credential_store.proto | 81 +++++++ .../model/data/movement/data_movement.proto | 113 +++++++++ .../model/data/replica/replica_catalog.proto | 73 ++++++ .../apache/airavata/model/dbevent/db_event.proto | 84 +++++++ .../org/apache/airavata/model/error/errors.proto | 132 +++++++++++ .../airavata/model/experiment/experiment.proto | 156 +++++++++++++ .../airavata/model/group/group_manager.proto | 51 ++++ .../proto/org/apache/airavata/model/job/job.proto | 40 ++++ .../model/messaging/messaging_events.proto | 142 +++++++++++ .../airavata/model/parallelism/parallelism.proto | 41 ++++ .../apache/airavata/model/process/process.proto | 73 ++++++ .../airavata/model/scheduling/scheduling.proto | 39 ++++ .../apache/airavata/model/security/security.proto | 32 +++ .../apache/airavata/model/sharing/sharing.proto | 254 ++++++++++++++++++++ .../org/apache/airavata/model/status/status.proto | 122 ++++++++++ .../org/apache/airavata/model/task/task.proto | 111 +++++++++ .../airavata/model/tenant/tenant_profile.proto | 63 +++++ .../apache/airavata/model/user/user_profile.proto | 137 +++++++++++ .../model/workflow/data/workflow_data.proto | 95 ++++++++ .../apache/airavata/model/workflow/workflow.proto | 162 +++++++++++++ .../airavata/model/workspace/workspace.proto | 111 +++++++++ 33 files changed, 3132 insertions(+) diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/accountprovisioning/account_provisioning.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/accountprovisioning/account_provisioning.proto new file mode 100644 index 0000000000..6c5e3e8b17 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/accountprovisioning/account_provisioning.proto @@ -0,0 +1,43 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.accountprovisioning; + +option java_package = "org.apache.airavata.model.appcatalog.accountprovisioning"; +option java_multiple_files = true; + +enum SSHAccountProvisionerConfigParamType { + SSH_ACCOUNT_PROVISIONER_CONFIG_PARAM_TYPE_UNKNOWN = 0; + STRING = 1; + CRED_STORE_PASSWORD_TOKEN = 2; +} + +message SSHAccountProvisionerConfigParam { + string name = 1; + SSHAccountProvisionerConfigParamType type = 2; + bool is_optional = 3; + string description = 4; +} + +message SSHAccountProvisioner { + string name = 1; + bool can_create_account = 2; + bool can_install_ssh_key = 3; + repeated SSHAccountProvisionerConfigParam config_params = 4; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/appdeployment/app_deployment.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/appdeployment/app_deployment.proto new file mode 100644 index 0000000000..9a3038f410 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/appdeployment/app_deployment.proto @@ -0,0 +1,103 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.appdeployment; + +option java_package = "org.apache.airavata.model.appcatalog.appdeployment"; +option java_multiple_files = true; + +import "org/apache/airavata/model/parallelism/parallelism.proto"; + +// 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. +// env_path_order: The order of the setting of the env variables when there are +// multiple env variables. +message SetEnvPaths { + string name = 1; + string value = 2; + int32 env_path_order = 3; +} + +// Job commands to be used in Pre Job, Post Job and Module Load Commands. +// +// command: The actual command in string format. +// command_order: Order of the command in the multiple command situation. +message CommandObject { + string command = 1; + int32 command_order = 2; +} + +// Application Module Information. A module has to be registered before +// registering a deployment. +// +// app_module_id: Airavata Internal Unique Job ID. This is set by the registry. +// app_module_name: Name of the application module. +// app_module_version: Version of the application. +// app_module_description: Description of the Module. +message ApplicationModule { + string app_module_id = 1; + string app_module_name = 2; + string app_module_version = 3; + string app_module_description = 4; +} + +// Application Deployment Description. +// +// app_deployment_id: Airavata Internal Unique Job ID. This is set by the registry. +// app_module_id: Application Module Id. +// compute_host_id: This ID maps application deployment to a particular resource +// previously described within Airavata. +// executable_path: Path to the executable. +// parallelism: Parallelism type of the application. +// app_deployment_description: Description of the deployment. +// module_load_cmds: Command string to load modules. +// lib_prepend_paths: Prepend to a path variable the value. +// lib_append_paths: Append to a path variable the value. +// set_environment: Assigns to the environment variable "NAME" the value. +// pre_job_commands: Commands to run before the job. +// post_job_commands: Commands to run after the job. +// default_queue_name: Default queue name. +// default_node_count: Default node count. +// default_cpu_count: Default CPU count. +// default_walltime: Default walltime. +// editable_by_user: Whether the deployment is editable by the user. +message ApplicationDeploymentDescription { + string app_deployment_id = 1; + string app_module_id = 2; + string compute_host_id = 3; + string executable_path = 4; + org.apache.airavata.model.parallelism.ApplicationParallelismType parallelism = 5; + string app_deployment_description = 6; + repeated CommandObject module_load_cmds = 7; + repeated SetEnvPaths lib_prepend_paths = 8; + repeated SetEnvPaths lib_append_paths = 9; + repeated SetEnvPaths set_environment = 10; + repeated CommandObject pre_job_commands = 11; + repeated CommandObject post_job_commands = 12; + string default_queue_name = 13; + int32 default_node_count = 14; + int32 default_cpu_count = 15; + int32 default_walltime = 16; + bool editable_by_user = 17; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/appinterface/app_interface.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/appinterface/app_interface.proto new file mode 100644 index 0000000000..2e5c665e8e --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/appinterface/app_interface.proto @@ -0,0 +1,52 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.appinterface; + +option java_package = "org.apache.airavata.model.appcatalog.appinterface"; +option java_multiple_files = true; + +import "org/apache/airavata/model/application/io/application_io.proto"; + +// Application Interface Description. +// +// application_interface_id: Airavata Internal Unique ID. This is set by the registry. +// application_name: Name of the application interface. +// application_description: Optional description. +// application_modules: Associate all application modules with versions which +// interface is applicable to. +// application_inputs: Inputs to be passed to the application. +// application_outputs: Outputs generated from the application. +// archive_working_directory: Whether to archive the working directory. +// has_optional_file_inputs: Whether the application has optional file inputs. +// clean_after_staged: Whether to clean up after staging. +message ApplicationInterfaceDescription { + string application_interface_id = 1; + string application_name = 2; + string application_description = 3; + repeated string application_modules = 4; + repeated org.apache.airavata.model.application.io.InputDataObjectType application_inputs = 5; + repeated org.apache.airavata.model.application.io.OutputDataObjectType application_outputs = 6; + bool archive_working_directory = 7; + bool has_optional_file_inputs = 8; + bool clean_after_staged = 9; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto new file mode 100644 index 0000000000..5f4e8390ed --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto @@ -0,0 +1,259 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.computeresource; + +option java_package = "org.apache.airavata.model.appcatalog.computeresource"; +option java_multiple_files = true; + +import "org/apache/airavata/model/parallelism/parallelism.proto"; +import "org/apache/airavata/model/data/movement/data_movement.proto"; + +// 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. +// SLURM: The Simple Linux Utility for Resource Management. +// UGE: Univa Grid Engine, a variation of PBS implementation. +// LSF: IBM Platform Load Sharing Facility. +enum ResourceJobManagerType { + RESOURCE_JOB_MANAGER_TYPE_UNKNOWN = 0; + FORK = 1; + PBS = 2; + SLURM = 3; + LSF = 4; + UGE = 5; + CLOUD = 6; + AIRAVATA_CUSTOM = 7; + HTCONDOR = 8; +} + +// Enumeration of resource job manager commands. +// +// SUBMISSION: Ex: qsub, sbatch. +// JOB_MONITORING: Ex: qstat, squeue. +// DELETION: Ex: qdel, scancel. +// CHECK_JOB: Detailed Status about the Job. Ex: checkjob. +// SHOW_QUEUE: List of Queued Job by the scheduler. Ex: showq. +// SHOW_RESERVATION: List all reservations. Ex: showres. +// SHOW_START: Display the start time of the specified job. Ex: showstart. +enum JobManagerCommand { + JOB_MANAGER_COMMAND_UNKNOWN = 0; + SUBMISSION = 1; + JOB_MONITORING = 2; + DELETION = 3; + CHECK_JOB = 4; + SHOW_QUEUE = 5; + SHOW_RESERVATION = 6; + SHOW_START = 7; + SHOW_CLUSTER_INFO = 8; + SHOW_NO_OF_RUNNING_JOBS = 9; + SHOW_NO_OF_PENDING_JOBS = 10; +} + +// Resource Job Manager Information. +// +// resource_job_manager_id: Airavata Internal Unique ID. +// resource_job_manager_type: A typical HPC cluster has a single Job Manager. +// push_monitoring_endpoint: If the job manager pushes out state changes to a +// database or bus, specify the service endpoint. +// job_manager_bin_path: Path to the Job Manager Installation Binary directory. +// job_manager_commands: An enumeration of commonly used manager commands. +// parallelism_prefix: Prefix to use for each parallelism type. +message ResourceJobManager { + string resource_job_manager_id = 1; + ResourceJobManagerType resource_job_manager_type = 2; + string push_monitoring_endpoint = 3; + string job_manager_bin_path = 4; + map<int32, string> job_manager_commands = 5; + map<int32, string> parallelism_prefix = 6; +} + +// Enumeration of file systems on the resource. +enum FileSystems { + FILE_SYSTEMS_UNKNOWN = 0; + HOME = 1; + WORK = 2; + LOCALTMP = 3; + SCRATCH = 4; + ARCHIVE = 5; +} + +// Batch Queue Information on SuperComputers. +// +// max_run_time: Maximum allowed run time in hours. +message BatchQueue { + string queue_name = 1; + string queue_description = 2; + int32 max_run_time = 3; + int32 max_nodes = 4; + int32 max_processors = 5; + int32 max_jobs_in_queue = 6; + int32 max_memory = 7; + int32 cpu_per_node = 8; + int32 default_node_count = 9; + int32 default_cpu_count = 10; + int32 default_walltime = 11; + string queue_specific_macros = 12; + bool is_default_queue = 13; +} + +// Enumeration of Airavata supported Job Submission Mechanisms for HPC clusters. +// +// SSH: Execute remote job submission commands via secure shell protocol. +// GLOBUS: Execute remote jobs via Globus GRAM service. +// UNICORE: Execute remote jobs via Unicore services. +enum JobSubmissionProtocol { + JOB_SUBMISSION_PROTOCOL_UNKNOWN = 0; + LOCAL = 1; + SSH = 2; + GLOBUS = 3; + UNICORE = 4; + CLOUD = 5; + SSH_FORK = 6; + LOCAL_FORK = 7; +} + +// Monitoring modes. +// +// POLL_JOB_MANAGER: GFac needs to pull job status changes. +// XSEDE_AMQP_SUBSCRIBE: Server will publish job status changes to AMQP server. +enum MonitorMode { + MONITOR_MODE_UNKNOWN = 0; + POLL_JOB_MANAGER = 1; + CLOUD_JOB_MONITOR = 2; + JOB_EMAIL_NOTIFICATION_MONITOR = 3; + XSEDE_AMQP_SUBSCRIBE = 4; + MONITOR_FORK = 5; + MONITOR_LOCAL = 6; +} + +enum DMType { + DM_TYPE_UNKNOWN = 0; + COMPUTE_RESOURCE = 1; + STORAGE_RESOURCE = 2; +} + +// Locally Fork Jobs as OS processes. +// +// job_submission_interface_id: Airavata Internal Unique ID. +// resource_job_manager: Resource job manager configuration. +// security_protocol: Security protocol. +message LOCALSubmission { + string job_submission_interface_id = 1; + ResourceJobManager resource_job_manager = 2; + org.apache.airavata.model.data.movement.SecurityProtocol security_protocol = 3; +} + +// Authenticate using Secured Shell. +// +// job_submission_interface_id: Airavata Internal Unique ID. +// security_protocol: Security protocol. +// resource_job_manager: Resource job manager configuration. +// alternative_ssh_host_name: If the login to ssh is different than the hostname. +// ssh_port: If a non-default port needs to be used. +// monitor_mode: Job monitoring mode. +// batch_queue_email_senders: Full email addresses for batch queue monitoring. +message SSHJobSubmission { + string job_submission_interface_id = 1; + org.apache.airavata.model.data.movement.SecurityProtocol security_protocol = 2; + ResourceJobManager resource_job_manager = 3; + string alternative_ssh_host_name = 4; + int32 ssh_port = 5; + MonitorMode monitor_mode = 6; + repeated string batch_queue_email_senders = 7; +} + +message GlobusJobSubmission { + string job_submission_interface_id = 1; + org.apache.airavata.model.data.movement.SecurityProtocol security_protocol = 2; + repeated string globus_gate_keeper_end_point = 3; +} + +// Unicore Job Submission. +// +// unicore_end_point_url: unicoreGateway End Point. +// security_protocol: The authenticationMode defines the way certificate is fetched. +message UnicoreJobSubmission { + string job_submission_interface_id = 1; + org.apache.airavata.model.data.movement.SecurityProtocol security_protocol = 2; + string unicore_end_point_url = 3; +} + +// Cloud provider name. +enum ProviderName { + PROVIDER_NAME_UNKNOWN = 0; + EC2 = 1; + AWSEC2 = 2; + RACKSPACE = 3; +} + +// Cloud Job Submission. +message CloudJobSubmission { + string job_submission_interface_id = 1; + org.apache.airavata.model.data.movement.SecurityProtocol security_protocol = 2; + string node_id = 3; + string executable_type = 4; + ProviderName provider_name = 5; + string user_account_name = 6; +} + +// Job Submission Interfaces. +// +// job_submission_interface_id: The Job Submission Interface has to be previously +// registered and referenced here. +// priority_order: For resources with multiple interfaces, the priority order +// should be selected. Lower the numerical number, higher the priority. +message JobSubmissionInterface { + string job_submission_interface_id = 1; + JobSubmissionProtocol job_submission_protocol = 2; + int32 priority_order = 3; +} + +// Computational Resource Description. +// +// compute_resource_id: Airavata Internal Unique Identifier to distinguish +// Compute Resource. +// host_name: Fully Qualified Host Name. +// host_aliases: Aliases if any. +// ip_addresses: IP Addresses of the Resource. +// resource_description: A user friendly description of the resource. +// job_submission_interfaces: All available mechanisms to interact with the resource. +// data_movement_interfaces: Available data movement interfaces. +// file_systems: Map of file systems type and the path. +message ComputeResourceDescription { + string compute_resource_id = 1; + string host_name = 2; + repeated string host_aliases = 3; + repeated string ip_addresses = 4; + string resource_description = 5; + bool enabled = 6; + repeated BatchQueue batch_queues = 7; + map<int32, string> file_systems = 8; + repeated JobSubmissionInterface job_submission_interfaces = 9; + repeated org.apache.airavata.model.data.movement.DataMovementInterface data_movement_interfaces = 10; + int32 max_memory_per_node = 11; + bool gateway_usage_reporting = 12; + string gateway_usage_module_load_command = 13; + string gateway_usage_executable = 14; + int32 cpus_per_node = 15; + int32 default_node_count = 16; + int32 default_cpu_count = 17; + int32 default_walltime = 18; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/gatewaygroups/gateway_groups.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/gatewaygroups/gateway_groups.proto new file mode 100644 index 0000000000..dd6c7a0363 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/gatewaygroups/gateway_groups.proto @@ -0,0 +1,30 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.gatewaygroups; + +option java_package = "org.apache.airavata.model.appcatalog.gatewaygroups"; +option java_multiple_files = true; + +message GatewayGroups { + string gateway_id = 1; + string admins_group_id = 2; + string read_only_admins_group_id = 3; + string default_gateway_users_group_id = 4; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/gatewayprofile/gateway_profile.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/gatewayprofile/gateway_profile.proto new file mode 100644 index 0000000000..31634076ea --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/gatewayprofile/gateway_profile.proto @@ -0,0 +1,62 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.gatewayprofile; + +option java_package = "org.apache.airavata.model.appcatalog.gatewayprofile"; +option java_multiple_files = true; + +import "org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto"; +import "org/apache/airavata/model/data/movement/data_movement.proto"; + +message ComputeResourcePreference { + string compute_resource_id = 1; + bool override_by_airavata = 2; + string login_user_name = 3; + org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol preferred_job_submission_protocol = 4; + org.apache.airavata.model.data.movement.DataMovementProtocol preferred_data_movement_protocol = 5; + string preferred_batch_queue = 6; + string scratch_location = 7; + string allocation_project_number = 8; + string resource_specific_credential_store_token = 9; + string usage_reporting_gateway_id = 10; + string quality_of_service = 11; + string reservation = 12; + int64 reservation_start_time = 13; + int64 reservation_end_time = 14; + string ssh_account_provisioner = 15; + map<string, string> ssh_account_provisioner_config = 16; + string ssh_account_provisioner_additional_info = 17; +} + +message StoragePreference { + string storage_resource_id = 1; + string login_user_name = 2; + string file_system_root_location = 3; + string resource_specific_credential_store_token = 4; +} + +message GatewayResourceProfile { + string gateway_id = 1; + string credential_store_token = 2; + repeated ComputeResourcePreference compute_resource_preferences = 3; + repeated StoragePreference storage_preferences = 4; + string identity_server_tenant = 5; + string identity_server_pwd_cred_token = 6; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/groupresourceprofile/group_resource_profile.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/groupresourceprofile/group_resource_profile.proto new file mode 100644 index 0000000000..7320b42d48 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/groupresourceprofile/group_resource_profile.proto @@ -0,0 +1,114 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.groupresourceprofile; + +option java_package = "org.apache.airavata.model.appcatalog.groupresourceprofile"; +option java_multiple_files = true; + +import "org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto"; +import "org/apache/airavata/model/data/movement/data_movement.proto"; + +enum ResourceType { + RESOURCE_TYPE_UNKNOWN = 0; + SLURM = 1; + AWS = 2; +} + +message GroupAccountSSHProvisionerConfig { + string resource_id = 1; + string group_resource_profile_id = 2; + string config_name = 3; + string config_value = 4; +} + +message ComputeResourceReservation { + string reservation_id = 1; + string reservation_name = 2; + repeated string queue_names = 3; + int64 start_time = 4; + int64 end_time = 5; +} + +message SlurmComputeResourcePreference { + string allocation_project_number = 1; + string preferred_batch_queue = 2; + string quality_of_service = 3; + string usage_reporting_gateway_id = 4; + string ssh_account_provisioner = 5; + repeated GroupAccountSSHProvisionerConfig group_ssh_account_provisioner_configs = 6; + string ssh_account_provisioner_additional_info = 7; + repeated ComputeResourceReservation reservations = 8; +} + +message AwsComputeResourcePreference { + string region = 1; + string preferred_ami_id = 2; + string preferred_instance_type = 3; +} + +// Thrift union — represented as a oneof message wrapper +message EnvironmentSpecificPreferences { + oneof preferences { + SlurmComputeResourcePreference slurm = 1; + AwsComputeResourcePreference aws = 2; + } +} + +message GroupComputeResourcePreference { + string compute_resource_id = 1; + string group_resource_profile_id = 2; + bool override_by_airavata = 3; + string login_user_name = 4; + string scratch_location = 5; + org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol preferred_job_submission_protocol = 6; + org.apache.airavata.model.data.movement.DataMovementProtocol preferred_data_movement_protocol = 7; + string resource_specific_credential_store_token = 8; + ResourceType resource_type = 9; + EnvironmentSpecificPreferences specific_preferences = 10; +} + +message ComputeResourcePolicy { + string resource_policy_id = 1; + string compute_resource_id = 2; + string group_resource_profile_id = 3; + repeated string allowed_batch_queues = 4; +} + +message BatchQueueResourcePolicy { + string resource_policy_id = 1; + string compute_resource_id = 2; + string group_resource_profile_id = 3; + string queuename = 4; + int32 max_allowed_nodes = 5; + int32 max_allowed_cores = 6; + int32 max_allowed_walltime = 7; +} + +message GroupResourceProfile { + string gateway_id = 1; + string group_resource_profile_id = 2; + string group_resource_profile_name = 3; + repeated GroupComputeResourcePreference compute_preferences = 4; + repeated ComputeResourcePolicy compute_resource_policies = 5; + repeated BatchQueueResourcePolicy batch_queue_resource_policies = 6; + int64 creation_time = 7; + int64 updated_time = 8; + string default_credential_store_token = 9; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/parser/parser.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/parser/parser.proto new file mode 100644 index 0000000000..9221be7826 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/parser/parser.proto @@ -0,0 +1,88 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.parser; + +option java_package = "org.apache.airavata.model.appcatalog.parser"; +option java_multiple_files = true; + +enum IOType { + IO_TYPE_UNKNOWN = 0; + FILE = 1; + PROPERTY = 2; +} + +message ParserInput { + string id = 1; + string name = 2; + bool required_input = 3; + string parser_id = 4; + IOType type = 5; +} + +message ParserOutput { + string id = 1; + string name = 2; + bool required_output = 3; + string parser_id = 4; + IOType type = 5; +} + +message Parser { + string id = 1; + string image_name = 2; + string output_dir_path = 3; + string input_dir_path = 4; + string execution_command = 5; + repeated ParserInput input_files = 6; + repeated ParserOutput output_files = 7; + string gateway_id = 8; +} + +message ParserConnectorInput { + string id = 1; + string input_id = 2; + string parent_output_id = 3; + string value = 4; + string parser_connector_id = 5; +} + +message ParserConnector { + string id = 1; + string parent_parser_id = 2; + string child_parser_id = 3; + repeated ParserConnectorInput connector_inputs = 4; + string parsing_template_id = 5; +} + +message ParsingTemplateInput { + string id = 1; + string target_input_id = 2; + string application_output_name = 3; + string value = 4; + string parsing_template_id = 5; +} + +message ParsingTemplate { + string id = 1; + string application_interface = 2; + repeated ParsingTemplateInput initial_inputs = 3; + repeated ParserConnector parser_connections = 4; + string gateway_id = 5; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/storageresource/storage_resource.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/storageresource/storage_resource.proto new file mode 100644 index 0000000000..59d0998e2e --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/storageresource/storage_resource.proto @@ -0,0 +1,79 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.storageresource; + +option java_package = "org.apache.airavata.model.appcatalog.storageresource"; +option java_multiple_files = true; + +import "org/apache/airavata/model/data/movement/data_movement.proto"; + +// Storage Resource Description. +// +// storage_resource_id: Airavata Internal Unique Identifier to distinguish +// Storage Resource. +// host_name: Fully Qualified Host Name. +// storage_resource_description: A user friendly description of the resource. +// enabled: Whether the resource is enabled. +// data_movement_interfaces: Available data movement interfaces. +// creation_time: Creation time of the resource. +// update_time: Last update time of the resource. +message StorageResourceDescription { + string storage_resource_id = 1; + string host_name = 2; + string storage_resource_description = 3; + bool enabled = 4; + repeated org.apache.airavata.model.data.movement.DataMovementInterface data_movement_interfaces = 5; + int64 creation_time = 6; + int64 update_time = 7; +} + +// Storage Volume Information. +// +// Contains disk usage information for a filesystem/mount point. +// +// total_size: Total size in human-readable format (e.g., "100G", "500M"). +// used_size: Used size in human-readable format. +// available_size: Available size in human-readable format. +// total_size_bytes: Total size in bytes. +// used_size_bytes: Used size in bytes. +// available_size_bytes: Available size in bytes. +// percentage_used: Percentage used. +// mount_point: Mount point/filesystem path. +// filesystem_type: Filesystem type if available. +message StorageVolumeInfo { + string total_size = 1; + string used_size = 2; + string available_size = 3; + int64 total_size_bytes = 4; + int64 used_size_bytes = 5; + int64 available_size_bytes = 6; + double percentage_used = 7; + string mount_point = 8; + string filesystem_type = 9; +} + +// Provides Directory Size Information of a given storage. +// +// total_size: Total size in human-readable format (e.g., "100G", "500M"). +// total_size_bytes: Total size in bytes. +message StorageDirectoryInfo { + string total_size = 1; + int64 total_size_bytes = 2; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/userresourceprofile/user_resource_profile.proto b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/userresourceprofile/user_resource_profile.proto new file mode 100644 index 0000000000..5821966b35 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/appcatalog/userresourceprofile/user_resource_profile.proto @@ -0,0 +1,54 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +syntax = "proto3"; + +package org.apache.airavata.model.appcatalog.userresourceprofile; + +option java_package = "org.apache.airavata.model.appcatalog.userresourceprofile"; +option java_multiple_files = true; + +message UserComputeResourcePreference { + string compute_resource_id = 1; + string login_user_name = 2; + string preferred_batch_queue = 3; + string scratch_location = 4; + string allocation_project_number = 5; + string resource_specific_credential_store_token = 6; + string quality_of_service = 7; + string reservation = 8; + int64 reservation_start_time = 9; + int64 reservation_end_time = 10; + bool validated = 11; +} + +message UserStoragePreference { + string storage_resource_id = 1; + string login_user_name = 2; + string file_system_root_location = 3; + string resource_specific_credential_store_token = 4; +} + +message UserResourceProfile { + string user_id = 1; + string gateway_id = 2; + string credential_store_token = 3; + repeated UserComputeResourcePreference user_compute_resource_preferences = 4; + repeated UserStoragePreference user_storage_preferences = 5; + string identity_server_tenant = 6; + string identity_server_pwd_cred_token = 7; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/application/io/application_io.proto b/airavata-api/src/main/proto/org/apache/airavata/model/application/io/application_io.proto new file mode 100644 index 0000000000..3c8eaf960c --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/application/io/application_io.proto @@ -0,0 +1,90 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.application.io; + +option java_package = "org.apache.airavata.model.application.io"; +option java_multiple_files = true; + +// Data Types supported in Airavata. The primitive data types. +enum DataType { + DATA_TYPE_UNKNOWN = 0; + STRING = 1; + INTEGER = 2; + FLOAT = 3; + URI = 4; + URI_COLLECTION = 5; + STDOUT = 6; + STDERR = 7; +} + +// Application Inputs. The parameters 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. +// application_argument: The argument flag sent to the application. Such as -p pressure. +// standard_input: When this value is set, the parameter is sent as standard input +// rather than a parameter. Typically this is passed using redirection operator ">". +// user_friendly_description: Description to be displayed at the user interface. +// meta_data: Any metadata. This is typically ignored by Airavata and is used by +// gateways for application configuration. +// override_filename: Rename input file to given value when staging to compute resource. +message InputDataObjectType { + string name = 1; + string value = 2; + DataType type = 3; + string application_argument = 4; + bool standard_input = 5; + string user_friendly_description = 6; + string meta_data = 7; + int32 input_order = 8; + bool is_required = 9; + bool required_to_added_to_command_line = 10; + bool data_staged = 11; + string storage_resource_id = 12; + bool is_read_only = 13; + string override_filename = 14; +} + +// Application Outputs. The parameters describe how outputs are generated by +// the application. +// +// name: Name of the parameter. +// value: Value of the parameter. +// type: Data type of the parameter. +// application_argument: The argument flag sent to the application. Such as -p pressure. +// user_friendly_description: Description to be displayed at the user interface. +// meta_data: Any metadata. This is typically ignored by Airavata and is used by +// gateways for application configuration. +message OutputDataObjectType { + string name = 1; + string value = 2; + DataType type = 3; + string application_argument = 4; + bool is_required = 5; + bool required_to_added_to_command_line = 6; + bool data_movement = 7; + string location = 8; + string search_query = 9; + bool output_streaming = 10; + string storage_resource_id = 11; + string meta_data = 12; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/commons/commons.proto b/airavata-api/src/main/proto/org/apache/airavata/model/commons/commons.proto new file mode 100644 index 0000000000..36e1afd7be --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/commons/commons.proto @@ -0,0 +1,46 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.commons; + +option java_package = "org.apache.airavata.model.commons"; +option java_multiple_files = true; + +message ErrorModel { + string error_id = 1; + int64 creation_time = 2; + string actual_error_message = 3; + string user_friendly_message = 4; + bool transient_or_persistent = 5; + repeated string root_cause_error_id_list = 6; +} + +// This data structure can be used to store the validation results +// captured during validation step and during the launchExperiment +// operation it can be easily checked to see the errors occurred +// during the experiment launch operation. +message ValidatorResult { + bool result = 1; + string error_details = 2; +} + +message ValidationResults { + bool validation_state = 1; + repeated ValidatorResult validation_result_list = 2; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/credential/store/credential_store.proto b/airavata-api/src/main/proto/org/apache/airavata/model/credential/store/credential_store.proto new file mode 100644 index 0000000000..6fd50a3663 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/credential/store/credential_store.proto @@ -0,0 +1,81 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.credential.store; + +option java_package = "org.apache.airavata.model.credential.store"; +option java_multiple_files = true; + +message SSHCredential { + string gateway_id = 1; + string username = 2; + string passphrase = 3; + string public_key = 4; + string private_key = 5; + int64 persisted_time = 6; + string token = 7; + string description = 8; +} + +// Data Types supported in Airavata. The primitive data types. +enum SummaryType { + SUMMARY_TYPE_UNKNOWN = 0; + SSH = 1; + PASSWD = 2; + CERT = 3; +} + +message CredentialSummary { + SummaryType type = 1; + string gateway_id = 2; + // The username corresponds to the Credential's portalUserName which is the + // username of the user that created the credential. + string username = 3; + string public_key = 4; + int64 persisted_time = 5; + string token = 6; + string description = 7; +} + +message CommunityUser { + string gateway_name = 1; + string username = 2; + string user_email = 3; +} + +message CertificateCredential { + CommunityUser community_user = 1; + string x509_cert = 2; + string not_after = 3; + string private_key = 4; + int64 life_time = 5; + string not_before = 6; + int64 persisted_time = 7; + string token = 8; +} + +message PasswordCredential { + string gateway_id = 1; + string portal_user_name = 2; + string login_user_name = 3; + string password = 4; + string description = 5; + int64 persisted_time = 6; + string token = 7; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/data/movement/data_movement.proto b/airavata-api/src/main/proto/org/apache/airavata/model/data/movement/data_movement.proto new file mode 100644 index 0000000000..fd9b32f2c2 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/data/movement/data_movement.proto @@ -0,0 +1,113 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.data.movement; + +option java_package = "org.apache.airavata.model.data.movement"; +option java_multiple_files = true; + +enum DMType { + DM_TYPE_UNKNOWN = 0; + COMPUTE_RESOURCE = 1; + STORAGE_RESOURCE = 2; +} + +// 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 +enum SecurityProtocol { + SECURITY_PROTOCOL_UNKNOWN = 0; + USERNAME_PASSWORD = 1; + SSH_KEYS = 2; + GSI = 3; + KERBEROS = 4; + OAUTH = 5; + LOCAL = 6; +} + +// Enumeration of data movement supported by Airavata. +// +// SCP: Job manager supporting the Portal Batch System (PBS) protocol. +// SFTP: The Simple Linux Utility for Resource Management is an open source workload manager. +// GridFTP: Globus File Transfer Protocol. +// UNICORE_STORAGE_SERVICE: Storage Service Provided by Unicore. +enum DataMovementProtocol { + DATA_MOVEMENT_PROTOCOL_UNKNOWN = 0; + DATA_MOVEMENT_PROTOCOL_LOCAL = 1; + SCP = 2; + SFTP = 3; + GRID_FTP = 4; + UNICORE_STORAGE_SERVICE = 5; +} + +// Data Movement through Secured Copy. +// +// alternative_scp_host_name: If the login to scp is different than the hostname +// itself, specify it here. +// ssh_port: If a non-default port needs to be used, specify it. +message SCPDataMovement { + string data_movement_interface_id = 1; + SecurityProtocol security_protocol = 2; + string alternative_scp_host_name = 3; + int32 ssh_port = 4; +} + +// Data Movement through GridFTP. +// +// alternative_scp_host_name: If the login to scp is different than the hostname +// itself, specify it here. +// ssh_port: If a non-default port needs to be used, specify it. +message GridFTPDataMovement { + string data_movement_interface_id = 1; + SecurityProtocol security_protocol = 2; + repeated string grid_ftp_end_points = 3; +} + +// Data Movement through UnicoreStorage. +// +// unicore_end_point_url: unicoreGateway End Point. The provider will query this +// service to fetch required service end points. +message UnicoreDataMovement { + string data_movement_interface_id = 1; + SecurityProtocol security_protocol = 2; + string unicore_end_point_url = 3; +} + +// LOCAL data movement. +message LOCALDataMovement { + string data_movement_interface_id = 1; +} + +// Data Movement Interfaces. +// +// data_movement_interface_id: The Data Movement Interface has to be previously +// registered and referenced here. +// priority_order: For resources with multiple interfaces, the priority order +// should be selected. Lower the numerical number, higher the priority. +message DataMovementInterface { + string data_movement_interface_id = 1; + DataMovementProtocol data_movement_protocol = 2; + int32 priority_order = 3; + int64 creation_time = 4; + int64 update_time = 5; + string storage_resource_id = 6; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/data/replica/replica_catalog.proto b/airavata-api/src/main/proto/org/apache/airavata/model/data/replica/replica_catalog.proto new file mode 100644 index 0000000000..80ac5146ec --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/data/replica/replica_catalog.proto @@ -0,0 +1,73 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.data.replica; + +option java_package = "org.apache.airavata.model.data.replica"; +option java_multiple_files = true; + +enum ReplicaLocationCategory { + REPLICA_LOCATION_CATEGORY_UNKNOWN = 0; + GATEWAY_DATA_STORE = 1; + COMPUTE_RESOURCE = 2; + LONG_TERM_STORAGE_RESOURCE = 3; + OTHER = 4; +} + +enum ReplicaPersistentType { + REPLICA_PERSISTENT_TYPE_UNKNOWN = 0; + TRANSIENT = 1; + PERSISTENT = 2; +} + +enum DataProductType { + DATA_PRODUCT_TYPE_UNKNOWN = 0; + FILE = 1; + COLLECTION = 2; +} + +message DataReplicaLocationModel { + string replica_id = 1; + string product_uri = 2; + string replica_name = 3; + string replica_description = 4; + int64 creation_time = 5; + int64 last_modified_time = 6; + int64 valid_until_time = 7; + ReplicaLocationCategory replica_location_category = 8; + ReplicaPersistentType replica_persistent_type = 9; + string storage_resource_id = 10; + string file_path = 11; + map<string, string> replica_metadata = 12; +} + +message DataProductModel { + string product_uri = 1; + string gateway_id = 2; + string parent_product_uri = 3; + string product_name = 4; + string product_description = 5; + string owner_name = 6; + DataProductType data_product_type = 7; + int32 product_size = 8; + int64 creation_time = 9; + int64 last_modified_time = 10; + map<string, string> product_metadata = 11; + repeated DataReplicaLocationModel replica_locations = 12; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/dbevent/db_event.proto b/airavata-api/src/main/proto/org/apache/airavata/model/dbevent/db_event.proto new file mode 100644 index 0000000000..9944aaf8b6 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/dbevent/db_event.proto @@ -0,0 +1,84 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.dbevent; + +option java_package = "org.apache.airavata.model.dbevent"; +option java_multiple_files = true; + +// Type of db-crud operation needed for replication +enum CrudType { + CRUD_TYPE_UNKNOWN = 0; + CREATE = 1; + READ = 2; + UPDATE = 3; + DELETE = 4; +} + +// Type of db-entity being replicated +enum EntityType { + ENTITY_TYPE_UNKNOWN = 0; + USER_PROFILE = 1; + TENANT = 2; + GROUP = 3; + PROJECT = 4; + EXPERIMENT = 5; + APPLICATION = 6; + SHARING = 7; + REGISTRY = 8; +} + +// Type of db-replication event +enum DBEventType { + DB_EVENT_TYPE_UNKNOWN = 0; + PUBLISHER = 1; + SUBSCRIBER = 2; +} + +// Details pertaining to publish event-type +message DBEventPublisherContext { + CrudType crud_type = 1; + EntityType entity_type = 2; + bytes entity_data_model = 3; +} + +// Context set by publisher +message DBEventPublisher { + DBEventPublisherContext publisher_context = 1; +} + +// Details pertaining to subscribe event-type +message DBEventSubscriber { + string subscriber_service = 1; +} + +// Either variable set, depending on event-type (Thrift union → oneof) +message DBEventMessageContext { + oneof context { + DBEventPublisher publisher = 1; + DBEventSubscriber subscriber = 2; + } +} + +// Actual db-event message transmitted +message DBEventMessage { + DBEventType db_event_type = 1; + DBEventMessageContext message_context = 2; + string publisher_service = 3; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/error/errors.proto b/airavata-api/src/main/proto/org/apache/airavata/model/error/errors.proto new file mode 100644 index 0000000000..9a1981b4cb --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/error/errors.proto @@ -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 Error Messages that can occur +// when invoking Apache Airavata Services through the API. + +syntax = "proto3"; + +package org.apache.airavata.model.error; + +option java_package = "org.apache.airavata.model.error"; +option java_multiple_files = true; + +// A list of Airavata API Error Message Types +// +// AIRAVATA_ERROR_TYPE_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 { + AIRAVATA_ERROR_TYPE_UNKNOWN = 0; + PERMISSION_DENIED = 1; + INTERNAL_ERROR = 2; + AUTHENTICATION_FAILURE = 3; + INVALID_AUTHORIZATION = 4; + AUTHORIZATION_EXPIRED = 5; + UNKNOWN_GATEWAY_ID = 6; + UNSUPPORTED_OPERATION = 7; +} + +// This exception is thrown when a client asks to perform an operation on an +// experiment that does not exist. +message ExperimentNotFoundException { + string message = 1; +} + +message ProjectNotFoundException { + string message = 1; +} + +// 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. +message InvalidRequestException { + string message = 1; +} + +// This exception is thrown when RPC timeout gets exceeded. +message TimedOutException { +} + +// This exception is thrown for invalid sshKeyAuthentication requests. +// +// message: contains the cause of the authorization failure. +message AuthenticationException { + string message = 1; +} + +// This exception is thrown for invalid authorization requests such as user does +// not have access to an application or resource. +// +// message: contains the authorization failure message +message AuthorizationException { + string message = 1; +} + +// This exception is thrown when you try to save a duplicate entity that already +// exists in the database. +// +// message: contains the associated error message +message DuplicateEntryException { + string message = 1; +} + +// 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. +// +// airavata_error_type: 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. +message AiravataClientException { + AiravataErrorType airavata_error_type = 1; + string parameter = 2; +} + +message ValidatorResult { + bool result = 1; + string error_details = 2; +} + +message ValidationResults { + bool validation_state = 1; + repeated ValidatorResult validation_result_list = 2; +} + +message LaunchValidationException { + ValidationResults validation_result = 1; + string error_message = 2; +} + +// 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. +// +// airavata_error_type: 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 +message AiravataSystemException { + AiravataErrorType airavata_error_type = 1; + string message = 2; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto b/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto new file mode 100644 index 0000000000..b04625b597 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto @@ -0,0 +1,156 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.experiment; + +option java_package = "org.apache.airavata.model.experiment"; +option java_multiple_files = true; + +import "org/apache/airavata/model/commons/commons.proto"; +import "org/apache/airavata/model/application/io/application_io.proto"; +import "org/apache/airavata/model/scheduling/scheduling.proto"; +import "org/apache/airavata/model/status/status.proto"; +import "org/apache/airavata/model/process/process.proto"; +import "org/apache/airavata/model/workflow/workflow.proto"; + +enum ExperimentType { + EXPERIMENT_TYPE_UNKNOWN = 0; + SINGLE_APPLICATION = 1; + WORKFLOW = 2; +} + +enum ExperimentSearchFields { + EXPERIMENT_SEARCH_FIELDS_UNKNOWN = 0; + EXPERIMENT_NAME = 1; + EXPERIMENT_DESC = 2; + APPLICATION_ID = 3; + FROM_DATE = 4; + TO_DATE = 5; + STATUS = 6; + PROJECT_ID = 7; + USER_NAME = 8; + JOB_ID = 9; +} + +enum ProjectSearchFields { + PROJECT_SEARCH_FIELDS_UNKNOWN = 0; + PROJECT_NAME = 1; + PROJECT_DESCRIPTION = 2; +} + +// UserConfigurationDataModel: A structure holding the experiment configuration. +// +// airavata_auto_schedule: Whether Airavata should auto schedule. +// override_manual_scheduled_params: Whether to override manually scheduled params. +// share_experiment_publicly: Whether to share the experiment publicly. +// computational_resource_scheduling: Computational resource scheduling model. +// throttle_resources: Whether to throttle resources. +// user_dn: User DN for certificate generation. +// generate_cert: Whether to generate a certificate. +// input_storage_resource_id: Input storage resource id. +// output_storage_resource_id: Output storage resource id. +// experiment_data_dir: Experiment data directory. +// use_user_cr_pref: Whether to use user compute resource preferences. +// group_resource_profile_id: Group resource profile id. +// auto_scheduled_comp_resource_scheduling_list: Auto-scheduled resource scheduling list. +message UserConfigurationDataModel { + bool airavata_auto_schedule = 1; + bool override_manual_scheduled_params = 2; + bool share_experiment_publicly = 3; + org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel computational_resource_scheduling = 4; + bool throttle_resources = 5; + string user_dn = 6; + bool generate_cert = 7; + string input_storage_resource_id = 8; + string output_storage_resource_id = 9; + string experiment_data_dir = 10; + bool use_user_cr_pref = 11; + string group_resource_profile_id = 12; + repeated org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel auto_scheduled_comp_resource_scheduling_list = 13; +} + +enum ExperimentCleanupStrategy { + EXPERIMENT_CLEANUP_STRATEGY_UNKNOWN = 0; + NONE = 1; + ALWAYS = 2; + ONLY_COMPLETED = 3; + ONLY_FAILED = 4; +} + +// ExperimentModel: A structure holding the experiment metadata and its child models. +// +// experiment_id: Unique identifier for the experiment. +// project_id: Project the experiment belongs to. +// gateway_id: Gateway identifier. +// experiment_type: Type of the experiment. +// user_name: The user name of the targeted gateway end user. +// experiment_name: The name of the experiment as defined by the user. +// description: The verbose description of the experiment. +message ExperimentModel { + string experiment_id = 1; + string project_id = 2; + string gateway_id = 3; + ExperimentType experiment_type = 4; + string user_name = 5; + string experiment_name = 6; + int64 creation_time = 7; + string description = 8; + string execution_id = 9; + string gateway_execution_id = 10; + string gateway_instance_id = 11; + bool enable_email_notification = 12; + repeated string email_addresses = 13; + UserConfigurationDataModel user_configuration_data = 14; + repeated org.apache.airavata.model.application.io.InputDataObjectType experiment_inputs = 15; + repeated org.apache.airavata.model.application.io.OutputDataObjectType experiment_outputs = 16; + repeated org.apache.airavata.model.status.ExperimentStatus experiment_status = 17; + repeated org.apache.airavata.model.commons.ErrorModel errors = 18; + repeated org.apache.airavata.model.process.ProcessModel processes = 19; + org.apache.airavata.model.workflow.AiravataWorkflow workflow = 20; + ExperimentCleanupStrategy clean_up_strategy = 21; +} + +message ExperimentSummaryModel { + string experiment_id = 1; + string project_id = 2; + string gateway_id = 3; + int64 creation_time = 4; + string user_name = 5; + string name = 6; + string description = 7; + string execution_id = 8; + string resource_host_id = 9; + string experiment_status = 10; + int64 status_update_time = 12; +} + +message ExperimentStatistics { + int32 all_experiment_count = 1; + int32 completed_experiment_count = 2; + int32 cancelled_experiment_count = 3; + int32 failed_experiment_count = 4; + int32 created_experiment_count = 5; + int32 running_experiment_count = 6; + repeated ExperimentSummaryModel all_experiments = 7; + repeated ExperimentSummaryModel completed_experiments = 8; + repeated ExperimentSummaryModel failed_experiments = 9; + repeated ExperimentSummaryModel cancelled_experiments = 10; + repeated ExperimentSummaryModel created_experiments = 11; + repeated ExperimentSummaryModel running_experiments = 12; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/group/group_manager.proto b/airavata-api/src/main/proto/org/apache/airavata/model/group/group_manager.proto new file mode 100644 index 0000000000..408fc273cc --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/group/group_manager.proto @@ -0,0 +1,51 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.group; + +option java_package = "org.apache.airavata.model.group"; +option java_multiple_files = true; + +enum ResourceType { + RESOURCE_TYPE_UNKNOWN = 0; + PROJECT = 1; + EXPERIMENT = 2; + DATA = 3; + APPLICATION_DEPLOYMENT = 4; + GROUP_RESOURCE_PROFILE = 5; + CREDENTIAL_TOKEN = 6; + OTHER = 7; +} + +enum ResourcePermissionType { + RESOURCE_PERMISSION_TYPE_UNKNOWN = 0; + WRITE = 1; + READ = 2; + OWNER = 3; + MANAGE_SHARING = 4; +} + +message GroupModel { + string id = 1; + string name = 2; + string owner_id = 3; + string description = 4; + repeated string members = 5; + repeated string admins = 6; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/job/job.proto b/airavata-api/src/main/proto/org/apache/airavata/model/job/job.proto new file mode 100644 index 0000000000..7d21579a5f --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/job/job.proto @@ -0,0 +1,40 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.job; + +option java_package = "org.apache.airavata.model.job"; +option java_multiple_files = true; + +import "org/apache/airavata/model/status/status.proto"; + +message JobModel { + string job_id = 1; + string task_id = 2; + string process_id = 3; + string job_description = 4; + int64 creation_time = 5; + repeated org.apache.airavata.model.status.JobStatus job_statuses = 6; + string compute_resource_consumed = 7; + string job_name = 8; + string working_dir = 9; + string std_out = 10; + string std_err = 11; + int32 exit_code = 12; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/messaging/messaging_events.proto b/airavata-api/src/main/proto/org/apache/airavata/model/messaging/messaging_events.proto new file mode 100644 index 0000000000..441d78acec --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/messaging/messaging_events.proto @@ -0,0 +1,142 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.messaging.event; + +option java_package = "org.apache.airavata.model.messaging.event"; +option java_multiple_files = true; + +import "org/apache/airavata/model/status/status.proto"; +import "org/apache/airavata/model/application/io/application_io.proto"; + +enum MessageLevel { + MESSAGE_LEVEL_UNKNOWN = 0; + INFO = 1; + DEBUG = 2; + ERROR = 3; + ACK = 4; +} + +enum MessageType { + MESSAGE_TYPE_UNKNOWN = 0; + EXPERIMENT = 1; + EXPERIMENT_CANCEL = 2; + TASK = 3; + PROCESS = 4; + JOB = 5; + LAUNCHPROCESS = 6; + TERMINATEPROCESS = 7; + PROCESSOUTPUT = 8; + DB_EVENT = 9; + INTERMEDIATE_OUTPUTS = 10; +} + +message ExperimentStatusChangeEvent { + org.apache.airavata.model.status.ExperimentState state = 1; + string experiment_id = 2; + string gateway_id = 3; +} + +message ProcessIdentifier { + string process_id = 1; + string experiment_id = 2; + string gateway_id = 3; +} + +message TaskIdentifier { + string task_id = 1; + string process_id = 2; + string experiment_id = 3; + string gateway_id = 4; +} + +message TaskStatusChangeEvent { + org.apache.airavata.model.status.TaskState state = 1; + TaskIdentifier task_identity = 2; +} + +message TaskStatusChangeRequestEvent { + org.apache.airavata.model.status.TaskState state = 1; + TaskIdentifier task_identity = 2; +} + +message ProcessStatusChangeEvent { + org.apache.airavata.model.status.ProcessState state = 1; + ProcessIdentifier process_identity = 2; +} + +message ProcessStatusChangeRequestEvent { + org.apache.airavata.model.status.ProcessState state = 1; + ProcessIdentifier process_identity = 2; +} + +message TaskOutputChangeEvent { + repeated org.apache.airavata.model.application.io.OutputDataObjectType output = 1; + TaskIdentifier task_identity = 2; +} + +message JobIdentifier { + string job_id = 1; + string task_id = 2; + string process_id = 3; + string experiment_id = 4; + string gateway_id = 5; +} + +message ExperimentSubmitEvent { + string experiment_id = 1; + string gateway_id = 2; +} + +message ProcessSubmitEvent { + string process_id = 1; + string gateway_id = 2; + string experiment_id = 3; + string token_id = 4; +} + +message ProcessTerminateEvent { + string process_id = 1; + string gateway_id = 2; + string token_id = 3; +} + +message JobStatusChangeEvent { + org.apache.airavata.model.status.JobState state = 1; + JobIdentifier job_identity = 2; +} + +message JobStatusChangeRequestEvent { + org.apache.airavata.model.status.JobState state = 1; + JobIdentifier job_identity = 2; +} + +message ExperimentIntermediateOutputsEvent { + string experiment_id = 1; + string gateway_id = 2; + repeated string output_names = 3; +} + +message Message { + bytes event = 1; + string message_id = 2; + MessageType message_type = 3; + int64 updated_time = 4; + MessageLevel message_level = 5; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/parallelism/parallelism.proto b/airavata-api/src/main/proto/org/apache/airavata/model/parallelism/parallelism.proto new file mode 100644 index 0000000000..26b4403d1b --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/parallelism/parallelism.proto @@ -0,0 +1,41 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// Application Parallelism Enumerations. + +syntax = "proto3"; + +package org.apache.airavata.model.parallelism; + +option java_package = "org.apache.airavata.model.parallelism"; +option java_multiple_files = true; + +// Enumeration of application parallelism supported by Airavata. +// +// SERIAL: Single processor applications without any parallelization. +// MPI: Messaging Passing Interface. +// OPENMP: Shared Memory Implementation. +// OPENMP_MPI: Hybrid Applications. +enum ApplicationParallelismType { + APPLICATION_PARALLELISM_TYPE_UNKNOWN = 0; + SERIAL = 1; + MPI = 2; + OPENMP = 3; + OPENMP_MPI = 4; + CCM = 5; + CRAY_MPI = 6; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto b/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto new file mode 100644 index 0000000000..e8938ccfa8 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto @@ -0,0 +1,73 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.process; + +option java_package = "org.apache.airavata.model.process"; +option java_multiple_files = true; + +import "org/apache/airavata/model/commons/commons.proto"; +import "org/apache/airavata/model/application/io/application_io.proto"; +import "org/apache/airavata/model/scheduling/scheduling.proto"; +import "org/apache/airavata/model/status/status.proto"; +import "org/apache/airavata/model/task/task.proto"; + +message ProcessWorkflow { + string process_id = 1; + string workflow_id = 2; + int64 creation_time = 3; + string type = 4; +} + +// ProcessModel: A structure holding the process details. The information is +// derived based on user provided configuration data or system inferred +// information from scheduling and QoS parameters. +// +// process_id: Unique identifier for the process. +// experiment_id: Parent experiment id. +// process_detail: A friendly description of the process. +message ProcessModel { + string process_id = 1; + string experiment_id = 2; + int64 creation_time = 3; + int64 last_update_time = 4; + repeated org.apache.airavata.model.status.ProcessStatus process_statuses = 5; + string process_detail = 6; + string application_interface_id = 7; + string application_deployment_id = 8; + string compute_resource_id = 9; + repeated org.apache.airavata.model.application.io.InputDataObjectType process_inputs = 10; + repeated org.apache.airavata.model.application.io.OutputDataObjectType process_outputs = 11; + org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel process_resource_schedule = 12; + repeated org.apache.airavata.model.task.TaskModel tasks = 13; + string task_dag = 14; + repeated org.apache.airavata.model.commons.ErrorModel process_errors = 15; + string gateway_execution_id = 16; + bool enable_email_notification = 17; + repeated string email_addresses = 18; + string input_storage_resource_id = 19; + string output_storage_resource_id = 20; + string user_dn = 21; + bool generate_cert = 22; + string experiment_data_dir = 23; + string user_name = 24; + bool use_user_cr_pref = 25; + string group_resource_profile_id = 26; + repeated ProcessWorkflow process_workflows = 27; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/scheduling/scheduling.proto b/airavata-api/src/main/proto/org/apache/airavata/model/scheduling/scheduling.proto new file mode 100644 index 0000000000..1298d2821f --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/scheduling/scheduling.proto @@ -0,0 +1,39 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +syntax = "proto3"; + +package org.apache.airavata.model.scheduling; + +option java_package = "org.apache.airavata.model.scheduling"; +option java_multiple_files = true; + +message ComputationalResourceSchedulingModel { + string resource_host_id = 1; + int32 total_cpu_count = 2; + int32 node_count = 3; + int32 number_of_threads = 4; + string queue_name = 5; + int32 wall_time_limit = 6; + int32 total_physical_memory = 7; + string chessis_number = 8; + string static_working_dir = 9; + string override_login_user_name = 10; + string override_scratch_location = 11; + string override_allocation_project_number = 12; + int32 m_group_count = 13; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/security/security.proto b/airavata-api/src/main/proto/org/apache/airavata/model/security/security.proto new file mode 100644 index 0000000000..5638e6d98a --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/security/security.proto @@ -0,0 +1,32 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.security; + +option java_package = "org.apache.airavata.model.security"; +option java_multiple_files = true; + +// This file describes the definitions of the security model which encapsulates +// the information that needs to be passed to the API methods in order to +// authenticate and authorize the users. + +message AuthzToken { + string access_token = 1; + map<string, string> claims_map = 2; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/sharing/sharing.proto b/airavata-api/src/main/proto/org/apache/airavata/model/sharing/sharing.proto new file mode 100644 index 0000000000..babd045e46 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/sharing/sharing.proto @@ -0,0 +1,254 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.sharing.registry.models; + +option java_package = "org.apache.airavata.sharing.registry.models"; +option java_multiple_files = true; + +// Domain is the entity that enables multi-tenancy in this component. Every +// tenant will be operating separately in its own silo which is identified by +// the domain id. +// +// domain_id: Will be generated by the server based on the domain name. +// name: A single word name that identifies the domain e.g seagrid, ultrascan. +// description: A short description for the domain. +// created_time: Will be set by the system. +// updated_time: Will be set by the system. +// initial_user_group_id: New users will automatically be added to this group. +message Domain { + string domain_id = 1; + string name = 2; + string description = 3; + int64 created_time = 4; + int64 updated_time = 5; + string initial_user_group_id = 6; +} + +// User is the model used to register a user in the system. +// +// user_id: User id provided by the client. +// domain_id: Domain id for that user. +// user_name: User name for the user. +// first_name: First name of the user. +// last_name: Last name of the user. +// email: Email address of the user. +// icon: A binary field for storing the user icon. +// created_time: If client provides this value then the system will use it, +// otherwise the current time will be set. +// updated_time: If client provides this value then the system will use it, +// otherwise the current time will be set. +message User { + string user_id = 1; + string domain_id = 2; + string user_name = 3; + string first_name = 4; + string last_name = 5; + string email = 6; + bytes icon = 7; + int64 created_time = 8; + int64 updated_time = 9; +} + +// Admin user for a group. Admin will have access to add or remove users from +// the group. +message GroupAdmin { + string group_id = 1; + string domain_id = 2; + string admin_id = 3; +} + +// System internal enum used to define single user groups and multi-user groups. +// Every user is also considered as a group in its own right for implementation ease. +enum GroupCardinality { + GROUP_CARDINALITY_UNKNOWN = 0; + SINGLE_USER = 1; + MULTI_USER = 2; +} + +// Group types can be either user level or domain level groups. +enum GroupType { + GROUP_TYPE_UNKNOWN = 0; + DOMAIN_LEVEL_GROUP = 1; + USER_LEVEL_GROUP = 2; +} + +// User group is a collection of users. +// +// group_id: Group id provided by the client. +// domain_id: Domain id for this user group. +// name: Name for the user group. Should be one word. +// description: Short description for the group. +// owner_id: Owner id of this group. +// group_type: Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP). +// group_cardinality: Group cardinality (SINGLE_USER, MULTI_USER). +// created_time: Will be set by the system. +// updated_time: Will be set by the system. +// group_admins: Admins for the group. +message UserGroup { + string group_id = 1; + string domain_id = 2; + string name = 3; + string description = 4; + string owner_id = 5; + GroupType group_type = 6; + GroupCardinality group_cardinality = 7; + int64 created_time = 8; + int64 updated_time = 9; + repeated GroupAdmin group_admins = 10; +} + +// System internal data type to match group child types. +enum GroupChildType { + GROUP_CHILD_TYPE_UNKNOWN = 0; + USER = 1; + GROUP = 2; +} + +// System internal data type to map group memberships. +message GroupMembership { + string parent_id = 1; + string child_id = 2; + string domain_id = 3; + GroupChildType child_type = 4; + int64 created_time = 5; + int64 updated_time = 6; +} + +// Client defined entity types. +// +// entity_type_id: Entity type id provided by the client. +// domain_id: Domain id of the domain. +// name: Name for the entity type. Should be a single word. +// description: Short description for the entity type. +// created_time: Will be set by the system. +// updated_time: Will be set by the system. +message EntityType { + string entity_type_id = 1; + string domain_id = 2; + string name = 3; + string description = 4; + int64 created_time = 5; + int64 updated_time = 6; +} + +// Fields that can be used to search entities. +enum EntitySearchField { + ENTITY_SEARCH_FIELD_UNKNOWN = 0; + NAME = 1; + DESCRIPTION = 2; + FULL_TEXT = 3; + PARRENT_ENTITY_ID = 4; + OWNER_ID = 5; + PERMISSION_TYPE_ID = 6; + CREATED_TIME = 7; + UPDATED_TIME = 8; + ENTITY_TYPE_ID = 9; + SHARED_COUNT = 10; +} + +// Different search operators that can be used with the entity search fields. +enum SearchCondition { + SEARCH_CONDITION_UNKNOWN = 0; + EQUAL = 1; + LIKE = 2; + FULL_TEXT_SEARCH = 3; + GTE = 4; + LTE = 5; + NOT = 6; +} + +// Container object for search criteria. +// +// search_field: Entity search field. +// value: Search value. +// search_condition: EQUAL, LIKE etc. +message SearchCriteria { + EntitySearchField search_field = 1; + string value = 2; + SearchCondition search_condition = 3; +} + +// Entity object which is used to register an entity in the system. +// +// entity_id: Entity id provided by the client. +// domain_id: Domain id. +// entity_type_id: Entity type id. +// owner_id: Owner id. +// parent_entity_id: Parent entity id. +// name: Name. +// description: Short description for the entity. +// binary_data: Any information stored in binary format. +// full_text: A string which will be considered for full text search. +// original_entity_creation_time: When registering old records, what is the +// original entity creation time. If not set will default to current time. +// created_time: Will be set by the system. +// updated_time: Will be set by the system. +message Entity { + string entity_id = 1; + string domain_id = 2; + string entity_type_id = 3; + string owner_id = 4; + string parent_entity_id = 5; + string name = 6; + string description = 7; + bytes binary_data = 8; + string full_text = 9; + int64 shared_count = 10; + int64 original_entity_creation_time = 11; + int64 created_time = 12; + int64 updated_time = 13; +} + +// Object for creating client defined permission type. +// +// permission_type_id: Permission type id provided by the client. +// domain_id: Domain id. +// name: Single word name for the permission. +// description: Short description for the permission type. +// created_time: Will be set by the system. +// updated_time: Will be set by the system. +message PermissionType { + string permission_type_id = 1; + string domain_id = 2; + string name = 3; + string description = 4; + int64 created_time = 5; + int64 updated_time = 6; +} + +// Internal enum type for managing sharings. +enum SharingType { + SHARING_TYPE_UNKNOWN = 0; + DIRECT_NON_CASCADING = 1; + DIRECT_CASCADING = 2; + INDIRECT_CASCADING = 3; +} + +// Internal data type for managing sharings. +message Sharing { + string permission_type_id = 1; + string entity_id = 2; + string group_id = 3; + SharingType sharing_type = 4; + string domain_id = 5; + string inherited_parent_id = 6; + int64 created_time = 7; + int64 updated_time = 8; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/status/status.proto b/airavata-api/src/main/proto/org/apache/airavata/model/status/status.proto new file mode 100644 index 0000000000..6bf3abee17 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/status/status.proto @@ -0,0 +1,122 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.status; + +option java_package = "org.apache.airavata.model.status"; +option java_multiple_files = true; + +enum ExperimentState { + EXPERIMENT_STATE_UNKNOWN = 0; + EXPERIMENT_STATE_CREATED = 1; + EXPERIMENT_STATE_VALIDATED = 2; + EXPERIMENT_STATE_SCHEDULED = 3; + EXPERIMENT_STATE_LAUNCHED = 4; + EXPERIMENT_STATE_EXECUTING = 5; + EXPERIMENT_STATE_CANCELING = 6; + EXPERIMENT_STATE_CANCELED = 7; + EXPERIMENT_STATE_COMPLETED = 8; + EXPERIMENT_STATE_FAILED = 9; +} + +enum TaskState { + TASK_STATE_UNKNOWN = 0; + TASK_STATE_CREATED = 1; + TASK_STATE_EXECUTING = 2; + TASK_STATE_COMPLETED = 3; + TASK_STATE_FAILED = 4; + TASK_STATE_CANCELED = 5; +} + +enum ProcessState { + PROCESS_STATE_UNKNOWN = 0; + PROCESS_STATE_CREATED = 1; + PROCESS_STATE_VALIDATED = 2; + PROCESS_STATE_STARTED = 3; + PROCESS_STATE_PRE_PROCESSING = 4; + PROCESS_STATE_CONFIGURING_WORKSPACE = 5; + PROCESS_STATE_INPUT_DATA_STAGING = 6; + PROCESS_STATE_EXECUTING = 7; + PROCESS_STATE_MONITORING = 8; + PROCESS_STATE_OUTPUT_DATA_STAGING = 9; + PROCESS_STATE_POST_PROCESSING = 10; + PROCESS_STATE_COMPLETED = 11; + PROCESS_STATE_FAILED = 12; + PROCESS_STATE_CANCELLING = 13; + PROCESS_STATE_CANCELED = 14; + PROCESS_STATE_QUEUED = 15; + PROCESS_STATE_DEQUEUING = 16; + PROCESS_STATE_REQUEUED = 17; +} + +enum JobState { + JOB_STATE_UNKNOWN = 0; + SUBMITTED = 1; + QUEUED = 2; + ACTIVE = 3; + COMPLETE = 4; + CANCELED = 5; + FAILED = 6; + SUSPENDED = 7; + NON_CRITICAL_FAIL = 8; +} + +// Status: A generic status object. +// +// state: State. +// time_of_state_change: time the status was last updated. +// reason: User friendly reason on how the state is inferred. + +message ExperimentStatus { + ExperimentState state = 1; + int64 time_of_state_change = 2; + string reason = 3; + string status_id = 4; +} + +message ProcessStatus { + ProcessState state = 1; + int64 time_of_state_change = 2; + string reason = 3; + string status_id = 4; + string process_id = 5; +} + +message TaskStatus { + TaskState state = 1; + int64 time_of_state_change = 2; + string reason = 3; + string status_id = 4; +} + +message JobStatus { + JobState job_state = 1; + int64 time_of_state_change = 2; + string reason = 3; + string status_id = 4; +} + +message QueueStatusModel { + string host_name = 1; + string queue_name = 2; + bool queue_up = 3; + int32 running_jobs = 4; + int32 queued_jobs = 5; + int64 time = 6; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/task/task.proto b/airavata-api/src/main/proto/org/apache/airavata/model/task/task.proto new file mode 100644 index 0000000000..19eed52b1c --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/task/task.proto @@ -0,0 +1,111 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.task; + +option java_package = "org.apache.airavata.model.task"; +option java_multiple_files = true; + +import "org/apache/airavata/model/commons/commons.proto"; +import "org/apache/airavata/model/application/io/application_io.proto"; +import "org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto"; +import "org/apache/airavata/model/data/movement/data_movement.proto"; +import "org/apache/airavata/model/job/job.proto"; +import "org/apache/airavata/model/status/status.proto"; + +// TaskTypes: An enumerated list of TaskTypes. Task being generic, the task type +// will provide the concrete interpretation. +enum TaskTypes { + TASK_TYPES_UNKNOWN = 0; + ENV_SETUP = 1; + DATA_STAGING = 2; + JOB_SUBMISSION = 3; + ENV_CLEANUP = 4; + MONITORING = 5; + OUTPUT_FETCHING = 6; +} + +// TaskModel: A structure holding the generic task details. +// +// task_id: Unique identifier for the task. +// task_type: Type of the task. +// parent_process_id: Process id that owns this task. +// creation_time: Task creation time. +// last_update_time: Last update time of the task. +// task_statuses: List of task status objects. +// task_detail: A friendly description of the task. +// sub_task_model: A generic byte object for the Task developer to store internal +// serialized data into registry catalogs. +// task_errors: List of error models. +// jobs: List of jobs spawned by this task. +// max_retry: Maximum retry count. +// current_retry: Current retry count. +message TaskModel { + string task_id = 1; + TaskTypes task_type = 2; + string parent_process_id = 3; + int64 creation_time = 4; + int64 last_update_time = 5; + repeated org.apache.airavata.model.status.TaskStatus task_statuses = 6; + string task_detail = 7; + bytes sub_task_model = 8; + repeated org.apache.airavata.model.commons.ErrorModel task_errors = 9; + repeated org.apache.airavata.model.job.JobModel jobs = 10; + int32 max_retry = 11; + int32 current_retry = 12; +} + +// DataStageType: Type of data staging operation. +enum DataStageType { + DATA_STAGE_TYPE_UNKNOWN = 0; + INPUT = 1; + OUPUT = 2; + ARCHIVE_OUTPUT = 3; +} + +// DataStagingTaskModel: A structure holding the data staging task details. +// +// Source and Destination locations include standard representation of protocol, +// host, port and path. +message DataStagingTaskModel { + string source = 1; + string destination = 2; + DataStageType type = 3; + int64 transfer_start_time = 4; + int64 transfer_end_time = 5; + string transfer_rate = 6; + org.apache.airavata.model.application.io.InputDataObjectType process_input = 7; + org.apache.airavata.model.application.io.OutputDataObjectType process_output = 8; +} + +// EnvironmentSetupTaskModel: A structure holding the environment creation task details. +message EnvironmentSetupTaskModel { + string location = 1; + org.apache.airavata.model.data.movement.SecurityProtocol protocol = 2; +} + +message JobSubmissionTaskModel { + org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol job_submission_protocol = 1; + org.apache.airavata.model.appcatalog.computeresource.MonitorMode monitor_mode = 2; + int32 wall_time = 3; +} + +message MonitorTaskModel { + org.apache.airavata.model.appcatalog.computeresource.MonitorMode monitor_mode = 1; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/tenant/tenant_profile.proto b/airavata-api/src/main/proto/org/apache/airavata/model/tenant/tenant_profile.proto new file mode 100644 index 0000000000..47e597ab8e --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/tenant/tenant_profile.proto @@ -0,0 +1,63 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +syntax = "proto3"; + +package org.apache.airavata.model.tenant; + +option java_package = "org.apache.airavata.model.tenant"; +option java_multiple_files = true; + +enum TenantApprovalStatus { + TENANT_APPROVAL_STATUS_UNKNOWN = 0; + REQUESTED = 1; + APPROVED = 2; + ACTIVE = 3; + DEACTIVATED = 4; + CANCELLED = 5; + DENIED = 6; + CREATED = 7; + DEPLOYED = 8; +} + +message TenantPreferences { + string tenant_admin_first_name = 10; + string tenant_admin_last_name = 11; + string tenant_admin_email = 12; +} + +message TenantConfig { + string oauth_client_id = 16; + string oauth_client_secret = 17; + string identity_server_user_name = 13; + string identity_server_password_token = 14; +} + +message Tenant { + string tenant_id = 1; + TenantApprovalStatus tenant_approval_status = 2; + string tenant_name = 3; + string domain = 4; + string email_address = 5; + string tenant_acronym = 6; + string tenant_url = 7; + string tenant_public_abstract = 8; + string review_proposal_description = 9; + string declined_reason = 15; + int64 request_creation_time = 18; + string requester_username = 19; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/user/user_profile.proto b/airavata-api/src/main/proto/org/apache/airavata/model/user/user_profile.proto new file mode 100644 index 0000000000..ead71d5e37 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/user/user_profile.proto @@ -0,0 +1,137 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.user; + +option java_package = "org.apache.airavata.model.user"; +option java_multiple_files = true; + +enum Status { + STATUS_UNKNOWN = 0; + ACTIVE = 1; + CONFIRMED = 2; + APPROVED = 3; + DELETED = 4; + DUPLICATE = 5; + GRACE_PERIOD = 6; + INVITED = 7; + DENIED = 8; + PENDING = 9; + PENDING_APPROVAL = 10; + PENDING_CONFIRMATION = 11; + SUSPENDED = 12; + DECLINED = 13; + EXPIRED = 14; +} + +enum USCitizenship { + US_CITIZENSHIP_UNKNOWN = 0; + US_CITIZEN = 1; + US_PERMANENT_RESIDENT = 2; + OTHER_NON_US_CITIZEN = 3; +} + +enum Ethnicity { + ETHNICITY_UNKNOWN = 0; + HISPANIC_LATINO = 1; + NOT_HISPANIC_LATINO = 2; +} + +enum Race { + RACE_UNKNOWN = 0; + ASIAN = 1; + AMERICAN_INDIAN_OR_ALASKAN_NATIVE = 2; + BLACK_OR_AFRICAN_AMERICAN = 3; + NATIVE_HAWAIIAN_OR_PACIFIC_ISLANDER = 4; + WHITE = 5; +} + +enum Disability { + DISABILITY_UNKNOWN = 0; + HEARING_IMAPAIRED = 1; + VISUAL_IMPAIRED = 2; + MOBILITY_OR_ORTHOPEDIC_IMPAIRMENT = 3; + OTHER_IMPAIRMENT = 4; +} + +message NSFDemographics { + string airavata_internal_user_id = 1; + string gender = 2; + USCitizenship us_citizenship = 3; + repeated Ethnicity ethnicities = 4; + repeated Race races = 5; + repeated Disability disabilities = 6; +} + +message CustomDashboard { + string airavata_internal_user_id = 1; + string experiment_id = 2; + string name = 3; + string description = 4; + string project = 5; + string owner = 6; + string application = 7; + string compute_resource = 8; + string job_name = 9; + string job_id = 10; + string job_status = 11; + string job_creation_time = 12; + string notifications_to = 13; + string working_dir = 14; + string job_description = 15; + string creation_time = 16; + string last_modified_time = 17; + string wall_time = 18; + string cpu_count = 19; + string node_count = 20; + string queue = 21; + string inputs = 22; + string outputs = 23; + string storage_dir = 24; + string errors = 25; +} + +message UserProfile { + string user_model_version = 1; + string airavata_internal_user_id = 2; + string user_id = 3; + string gateway_id = 4; + repeated string emails = 5; + string first_name = 6; + string last_name = 7; + string middle_name = 8; + string name_prefix = 9; + string name_suffix = 10; + string orcid_id = 11; + repeated string phones = 12; + string country = 13; + repeated string nationality = 14; + string home_organization = 15; + string origination_affiliation = 16; + int64 creation_time = 17; + int64 last_access_time = 18; + int64 valid_until = 19; + Status state = 20; + string comments = 21; + repeated string labeled_uri = 22; + string gpg_key = 23; + string time_zone = 24; + NSFDemographics nsf_demographics = 25; + CustomDashboard custom_dashboard = 26; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/workflow/data/workflow_data.proto b/airavata-api/src/main/proto/org/apache/airavata/model/workflow/data/workflow_data.proto new file mode 100644 index 0000000000..20901babf7 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/workflow/data/workflow_data.proto @@ -0,0 +1,95 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model; + +option java_package = "org.apache.airavata.model"; +option java_multiple_files = true; + +import "org/apache/airavata/model/application/io/application_io.proto"; + +enum WorkflowState { + WORKFLOW_STATE_UNKNOWN = 0; + CREATED = 1; + STARTED = 2; + EXECUTING = 3; + COMPLETED = 4; + FAILED = 5; + CANCELLING = 6; + CANCELED = 7; +} + +enum ComponentState { + COMPONENT_STATE_UNKNOWN = 0; + COMPONENT_CREATED = 1; + WAITING = 2; + READY = 3; + RUNNING = 4; + COMPONENT_COMPLETED = 5; + COMPONENT_FAILED = 6; + COMPONENT_CANCELED = 7; +} + +message ComponentStatus { + ComponentState state = 1; + string reason = 2; + int64 timeof_state_change = 3; +} + +message WorkflowStatus { + WorkflowState state = 1; + int64 time_of_state_change = 2; + string reason = 3; +} + +message WorkflowModel { + string template_id = 1; + string name = 2; + string graph = 3; + string gateway_id = 4; + string created_user = 5; + bytes image = 6; + repeated org.apache.airavata.model.application.io.InputDataObjectType workflow_inputs = 7; + repeated org.apache.airavata.model.application.io.OutputDataObjectType workflow_outputs = 8; + int64 creation_time = 9; +} + +message EdgeModel { + string edge_id = 1; + string name = 2; + ComponentStatus status = 3; + string description = 4; +} + +message PortModel { + string port_id = 1; + string name = 2; + ComponentStatus status = 3; + string value = 4; + string description = 5; +} + +message NodeModel { + string node_id = 1; + string name = 2; + string application_id = 3; + string application_name = 4; + ComponentStatus status = 5; + string description = 6; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/workflow/workflow.proto b/airavata-api/src/main/proto/org/apache/airavata/model/workflow/workflow.proto new file mode 100644 index 0000000000..5dd3113d11 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/workflow/workflow.proto @@ -0,0 +1,162 @@ +// 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. + +syntax = "proto3"; + +package org.apache.airavata.model.workflow; + +option java_package = "org.apache.airavata.model.workflow"; +option java_multiple_files = true; + +import "org/apache/airavata/model/commons/commons.proto"; +import "org/apache/airavata/model/application/io/application_io.proto"; + +enum ApplicationState { + APPLICATION_STATE_UNKNOWN = 0; + APPLICATION_STATE_CREATED = 1; + APPLICATION_STATE_VALIDATED = 2; + APPLICATION_STATE_SCHEDULED = 3; + APPLICATION_STATE_LAUNCHED = 4; + APPLICATION_STATE_EXECUTING = 5; + APPLICATION_STATE_CANCELING = 6; + APPLICATION_STATE_CANCELED = 7; + APPLICATION_STATE_COMPLETED = 8; + APPLICATION_STATE_FAILED = 9; +} + +message ApplicationStatus { + string id = 1; + ApplicationState state = 2; + string description = 3; + int64 updated_at = 4; +} + +message WorkflowApplication { + string id = 1; + string process_id = 2; + string application_interface_id = 3; + string compute_resource_id = 4; + string queue_name = 5; + int32 node_count = 6; + int32 core_count = 7; + int32 wall_time_limit = 8; + int32 physical_memory = 9; + repeated ApplicationStatus statuses = 10; + repeated org.apache.airavata.model.commons.ErrorModel errors = 11; + int64 created_at = 12; + int64 updated_at = 13; +} + +message DataBlock { + string id = 1; + string value = 2; + org.apache.airavata.model.application.io.DataType type = 3; + int64 created_at = 4; + int64 updated_at = 5; +} + +enum ComponentType { + COMPONENT_TYPE_UNKNOWN = 0; + APPLICATION = 1; + HANDLER = 2; +} + +message WorkflowConnection { + string id = 1; + DataBlock data_block = 2; + ComponentType from_type = 3; + string from_id = 4; + string from_output_name = 5; + ComponentType to_type = 6; + string to_id = 7; + string to_input_name = 8; + int64 created_at = 9; + int64 updated_at = 10; +} + +enum HandlerType { + HANDLER_TYPE_UNKNOWN = 0; + FLOW_STARTER = 1; + FLOW_TERMINATOR = 2; +} + +enum HandlerState { + HANDLER_STATE_UNKNOWN = 0; + HANDLER_STATE_CREATED = 1; + HANDLER_STATE_VALIDATED = 2; + HANDLER_STATE_SCHEDULED = 3; + HANDLER_STATE_LAUNCHED = 4; + HANDLER_STATE_EXECUTING = 5; + HANDLER_STATE_CANCELING = 6; + HANDLER_STATE_CANCELED = 7; + HANDLER_STATE_COMPLETED = 8; + HANDLER_STATE_FAILED = 9; +} + +message HandlerStatus { + string id = 1; + HandlerState state = 2; + string description = 3; + int64 updated_at = 4; +} + +message WorkflowHandler { + string id = 1; + HandlerType type = 2; + repeated org.apache.airavata.model.application.io.InputDataObjectType inputs = 3; + repeated org.apache.airavata.model.application.io.OutputDataObjectType outputs = 4; + repeated HandlerStatus statuses = 5; + repeated org.apache.airavata.model.commons.ErrorModel errors = 6; + int64 created_at = 7; + int64 updated_at = 8; +} + +enum WorkflowState { + WORKFLOW_STATE_UNKNOWN = 0; + WORKFLOW_STATE_CREATED = 1; + WORKFLOW_STATE_VALIDATED = 2; + WORKFLOW_STATE_SCHEDULED = 3; + WORKFLOW_STATE_LAUNCHED = 4; + WORKFLOW_STATE_EXECUTING = 5; + WORKFLOW_STATE_PAUSING = 6; + WORKFLOW_STATE_PAUSED = 7; + WORKFLOW_STATE_RESTARTING = 8; + WORKFLOW_STATE_CANCELING = 9; + WORKFLOW_STATE_CANCELED = 10; + WORKFLOW_STATE_COMPLETED = 11; + WORKFLOW_STATE_FAILED = 12; +} + +message WorkflowStatus { + string id = 1; + WorkflowState state = 2; + string description = 3; + int64 updated_at = 4; +} + +message AiravataWorkflow { + string id = 1; + string experiment_id = 2; + string description = 3; + repeated WorkflowApplication applications = 4; + repeated WorkflowHandler handlers = 5; + repeated WorkflowConnection connections = 6; + repeated WorkflowStatus statuses = 7; + repeated org.apache.airavata.model.commons.ErrorModel errors = 8; + int64 created_at = 9; + int64 updated_at = 10; +} diff --git a/airavata-api/src/main/proto/org/apache/airavata/model/workspace/workspace.proto b/airavata-api/src/main/proto/org/apache/airavata/model/workspace/workspace.proto new file mode 100644 index 0000000000..bdb5cff764 --- /dev/null +++ b/airavata-api/src/main/proto/org/apache/airavata/model/workspace/workspace.proto @@ -0,0 +1,111 @@ +// 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 Airavata Workspace. The workspace +// is a container for all user data organized as Projects and Experiments within +// them. + +syntax = "proto3"; + +package org.apache.airavata.model.workspace; + +option java_package = "org.apache.airavata.model.workspace"; +option java_multiple_files = true; + +message Group { + string group_name = 1; + string description = 2; +} + +message Project { + string project_id = 1; + string owner = 2; + string gateway_id = 3; + string name = 4; + string description = 5; + int64 creation_time = 6; + repeated string shared_users = 7; + repeated string shared_groups = 8; +} + +message User { + string airavata_internal_user_id = 1; + string user_name = 2; + string gateway_id = 3; + string first_name = 4; + string last_name = 5; + string email = 6; +} + +enum GatewayApprovalStatus { + GATEWAY_APPROVAL_STATUS_UNKNOWN = 0; + REQUESTED = 1; + APPROVED = 2; + ACTIVE = 3; + DEACTIVATED = 4; + CANCELLED = 5; + DENIED = 6; + CREATED = 7; + DEPLOYED = 8; +} + +message Gateway { + string airavata_internal_gateway_id = 1; + string gateway_id = 2; + GatewayApprovalStatus gateway_approval_status = 3; + string gateway_name = 4; + string domain = 5; + string email_address = 6; + string gateway_acronym = 7; + string gateway_url = 8; + string gateway_public_abstract = 9; + string review_proposal_description = 10; + string gateway_admin_first_name = 11; + string gateway_admin_last_name = 12; + string gateway_admin_email = 13; + string identity_server_user_name = 14; + string identity_server_password_token = 15; + string declined_reason = 16; + string oauth_client_id = 17; + string oauth_client_secret = 18; + int64 request_creation_time = 19; + string requester_username = 20; +} + +message GatewayUsageReportingCommand { + string gateway_id = 1; + string compute_resource_id = 2; + string command = 3; +} + +enum NotificationPriority { + NOTIFICATION_PRIORITY_UNKNOWN = 0; + LOW = 1; + NORMAL = 2; + HIGH = 3; +} + +message Notification { + string notification_id = 1; + string gateway_id = 2; + string title = 3; + string notification_message = 4; + int64 creation_time = 5; + int64 published_time = 6; + int64 expiration_time = 7; + NotificationPriority priority = 8; +}
