You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ya...@apache.org on 2026/03/26 19:52:00 UTC
(airavata) 08/13: feat: add proto definitions mirroring all thrift IDL data models
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 <ya...@icloud.com>
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;
+}