This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch feat/grpc-armeria-migration in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 10757ad431609497ee6b68715feb68dc274185cd Author: yasithdev <[email protected]> AuthorDate: Tue Mar 31 02:38:30 2026 -0400 feat: add compute domain service protos for gRPC migration Add application_catalog_service.proto (24 RPCs), resource_service.proto (35 RPCs), and parser_service.proto (9 RPCs) covering application modules/deployments/interfaces, compute/storage resources, job submissions, data movements, and parsers. --- .../services/application_catalog_service.proto | 362 +++++++++++++++ .../src/main/proto/services/parser_service.proto | 156 +++++++ .../src/main/proto/services/resource_service.proto | 498 +++++++++++++++++++++ 3 files changed, 1016 insertions(+) diff --git a/airavata-api/src/main/proto/services/application_catalog_service.proto b/airavata-api/src/main/proto/services/application_catalog_service.proto new file mode 100644 index 0000000000..28a6b3bd0b --- /dev/null +++ b/airavata-api/src/main/proto/services/application_catalog_service.proto @@ -0,0 +1,362 @@ +// 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.api.appcatalog; + +option java_package = "org.apache.airavata.api.appcatalog"; +option java_multiple_files = true; + +import "google/api/annotations.proto"; +import "google/protobuf/empty.proto"; +import "org/apache/airavata/model/appcatalog/appdeployment/app_deployment.proto"; +import "org/apache/airavata/model/appcatalog/appinterface/app_interface.proto"; +import "org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto"; +import "org/apache/airavata/model/application/io/application_io.proto"; + +// ApplicationCatalogService provides RPCs for managing application modules, +// deployments, and interfaces. +service ApplicationCatalogService { + + // --- Application Modules --- + + rpc RegisterApplicationModule(RegisterApplicationModuleRequest) returns (RegisterApplicationModuleResponse) { + option (google.api.http) = { + post: "/api/v1/app-modules" + body: "application_module" + }; + } + + rpc GetApplicationModule(GetApplicationModuleRequest) returns (org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule) { + option (google.api.http) = { + get: "/api/v1/app-modules/{app_module_id}" + }; + } + + rpc UpdateApplicationModule(UpdateApplicationModuleRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/app-modules/{app_module_id}" + body: "application_module" + }; + } + + rpc DeleteApplicationModule(DeleteApplicationModuleRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/app-modules/{app_module_id}" + }; + } + + rpc GetAllAppModules(GetAllAppModulesRequest) returns (GetAllAppModulesResponse) { + option (google.api.http) = { + get: "/api/v1/app-modules" + }; + } + + rpc GetAccessibleAppModules(GetAccessibleAppModulesRequest) returns (GetAccessibleAppModulesResponse) { + option (google.api.http) = { + get: "/api/v1/app-modules:accessible" + }; + } + + // --- Application Deployments --- + + rpc RegisterApplicationDeployment(RegisterApplicationDeploymentRequest) returns (RegisterApplicationDeploymentResponse) { + option (google.api.http) = { + post: "/api/v1/app-deployments" + body: "application_deployment" + }; + } + + rpc GetApplicationDeployment(GetApplicationDeploymentRequest) returns (org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription) { + option (google.api.http) = { + get: "/api/v1/app-deployments/{app_deployment_id}" + }; + } + + rpc UpdateApplicationDeployment(UpdateApplicationDeploymentRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/app-deployments/{app_deployment_id}" + body: "application_deployment" + }; + } + + rpc DeleteApplicationDeployment(DeleteApplicationDeploymentRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/app-deployments/{app_deployment_id}" + }; + } + + rpc GetAllApplicationDeployments(GetAllApplicationDeploymentsRequest) returns (GetAllApplicationDeploymentsResponse) { + option (google.api.http) = { + get: "/api/v1/app-deployments" + }; + } + + rpc GetAccessibleApplicationDeployments(GetAccessibleApplicationDeploymentsRequest) returns (GetAccessibleApplicationDeploymentsResponse) { + option (google.api.http) = { + get: "/api/v1/app-deployments:accessible" + }; + } + + rpc GetAppModuleDeployedResources(GetAppModuleDeployedResourcesRequest) returns (GetAppModuleDeployedResourcesResponse) { + option (google.api.http) = { + get: "/api/v1/app-modules/{app_module_id}/deployed-resources" + }; + } + + rpc GetDeploymentsForModuleAndProfile(GetDeploymentsForModuleAndProfileRequest) returns (GetDeploymentsForModuleAndProfileResponse) { + option (google.api.http) = { + get: "/api/v1/app-modules/{app_module_id}/profiles/{group_resource_profile_id}/deployments" + }; + } + + // --- Application Interfaces --- + + rpc RegisterApplicationInterface(RegisterApplicationInterfaceRequest) returns (RegisterApplicationInterfaceResponse) { + option (google.api.http) = { + post: "/api/v1/app-interfaces" + body: "application_interface" + }; + } + + rpc CloneApplicationInterface(CloneApplicationInterfaceRequest) returns (CloneApplicationInterfaceResponse) { + option (google.api.http) = { + post: "/api/v1/app-interfaces/{app_interface_id}:clone" + }; + } + + rpc GetApplicationInterface(GetApplicationInterfaceRequest) returns (org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription) { + option (google.api.http) = { + get: "/api/v1/app-interfaces/{app_interface_id}" + }; + } + + rpc UpdateApplicationInterface(UpdateApplicationInterfaceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/app-interfaces/{app_interface_id}" + body: "application_interface" + }; + } + + rpc DeleteApplicationInterface(DeleteApplicationInterfaceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/app-interfaces/{app_interface_id}" + }; + } + + rpc GetAllApplicationInterfaceNames(GetAllApplicationInterfaceNamesRequest) returns (GetAllApplicationInterfaceNamesResponse) { + option (google.api.http) = { + get: "/api/v1/app-interfaces:names" + }; + } + + rpc GetAllApplicationInterfaces(GetAllApplicationInterfacesRequest) returns (GetAllApplicationInterfacesResponse) { + option (google.api.http) = { + get: "/api/v1/app-interfaces" + }; + } + + rpc GetApplicationInputs(GetApplicationInputsRequest) returns (GetApplicationInputsResponse) { + option (google.api.http) = { + get: "/api/v1/app-interfaces/{app_interface_id}/inputs" + }; + } + + rpc GetApplicationOutputs(GetApplicationOutputsRequest) returns (GetApplicationOutputsResponse) { + option (google.api.http) = { + get: "/api/v1/app-interfaces/{app_interface_id}/outputs" + }; + } + + rpc GetAvailableComputeResources(GetAvailableComputeResourcesRequest) returns (GetAvailableComputeResourcesResponse) { + option (google.api.http) = { + get: "/api/v1/app-interfaces/{app_interface_id}/compute-resources" + }; + } +} + +// --- Application Module Request/Response messages --- + +message RegisterApplicationModuleRequest { + string gateway_id = 1; + org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule application_module = 2; +} + +message RegisterApplicationModuleResponse { + string app_module_id = 1; +} + +message GetApplicationModuleRequest { + string app_module_id = 1; +} + +message UpdateApplicationModuleRequest { + string app_module_id = 1; + org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule application_module = 2; +} + +message DeleteApplicationModuleRequest { + string app_module_id = 1; +} + +message GetAllAppModulesRequest { + string gateway_id = 1; +} + +message GetAllAppModulesResponse { + repeated org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule application_modules = 1; +} + +message GetAccessibleAppModulesRequest { + string gateway_id = 1; +} + +message GetAccessibleAppModulesResponse { + repeated org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule application_modules = 1; +} + +// --- Application Deployment Request/Response messages --- + +message RegisterApplicationDeploymentRequest { + string gateway_id = 1; + org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription application_deployment = 2; +} + +message RegisterApplicationDeploymentResponse { + string app_deployment_id = 1; +} + +message GetApplicationDeploymentRequest { + string app_deployment_id = 1; +} + +message UpdateApplicationDeploymentRequest { + string app_deployment_id = 1; + org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription application_deployment = 2; +} + +message DeleteApplicationDeploymentRequest { + string app_deployment_id = 1; +} + +message GetAllApplicationDeploymentsRequest { + string gateway_id = 1; +} + +message GetAllApplicationDeploymentsResponse { + repeated org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription application_deployments = 1; +} + +message GetAccessibleApplicationDeploymentsRequest { + string gateway_id = 1; +} + +message GetAccessibleApplicationDeploymentsResponse { + repeated org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription application_deployments = 1; +} + +message GetAppModuleDeployedResourcesRequest { + string app_module_id = 1; +} + +message GetAppModuleDeployedResourcesResponse { + repeated string compute_resource_ids = 1; +} + +message GetDeploymentsForModuleAndProfileRequest { + string app_module_id = 1; + string group_resource_profile_id = 2; +} + +message GetDeploymentsForModuleAndProfileResponse { + repeated org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription application_deployments = 1; +} + +// --- Application Interface Request/Response messages --- + +message RegisterApplicationInterfaceRequest { + string gateway_id = 1; + org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription application_interface = 2; +} + +message RegisterApplicationInterfaceResponse { + string app_interface_id = 1; +} + +message CloneApplicationInterfaceRequest { + string app_interface_id = 1; + string new_application_name = 2; + string gateway_id = 3; +} + +message CloneApplicationInterfaceResponse { + string app_interface_id = 1; +} + +message GetApplicationInterfaceRequest { + string app_interface_id = 1; +} + +message UpdateApplicationInterfaceRequest { + string app_interface_id = 1; + org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription application_interface = 2; +} + +message DeleteApplicationInterfaceRequest { + string app_interface_id = 1; +} + +message GetAllApplicationInterfaceNamesRequest { + string gateway_id = 1; +} + +message GetAllApplicationInterfaceNamesResponse { + map<string, string> application_interface_names = 1; +} + +message GetAllApplicationInterfacesRequest { + string gateway_id = 1; +} + +message GetAllApplicationInterfacesResponse { + repeated org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription application_interfaces = 1; +} + +message GetApplicationInputsRequest { + string app_interface_id = 1; +} + +message GetApplicationInputsResponse { + repeated org.apache.airavata.model.application.io.InputDataObjectType application_inputs = 1; +} + +message GetApplicationOutputsRequest { + string app_interface_id = 1; +} + +message GetApplicationOutputsResponse { + repeated org.apache.airavata.model.application.io.OutputDataObjectType application_outputs = 1; +} + +message GetAvailableComputeResourcesRequest { + string app_interface_id = 1; +} + +message GetAvailableComputeResourcesResponse { + map<string, string> compute_resource_names = 1; +} diff --git a/airavata-api/src/main/proto/services/parser_service.proto b/airavata-api/src/main/proto/services/parser_service.proto new file mode 100644 index 0000000000..6e374f7fb7 --- /dev/null +++ b/airavata-api/src/main/proto/services/parser_service.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.api.parser; + +option java_package = "org.apache.airavata.api.parser"; +option java_multiple_files = true; + +import "google/api/annotations.proto"; +import "google/protobuf/empty.proto"; +import "org/apache/airavata/model/appcatalog/parser/parser.proto"; + +// ParserService provides RPCs for managing parsers and parsing templates. +service ParserService { + + // --- Parsers --- + + rpc SaveParser(SaveParserRequest) returns (SaveParserResponse) { + option (google.api.http) = { + post: "/api/v1/parsers" + body: "parser" + }; + } + + rpc GetParser(GetParserRequest) returns (org.apache.airavata.model.appcatalog.parser.Parser) { + option (google.api.http) = { + get: "/api/v1/gateways/{gateway_id}/parsers/{parser_id}" + }; + } + + rpc ListAllParsers(ListAllParsersRequest) returns (ListAllParsersResponse) { + option (google.api.http) = { + get: "/api/v1/gateways/{gateway_id}/parsers" + }; + } + + rpc RemoveParser(RemoveParserRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/gateways/{gateway_id}/parsers/{parser_id}" + }; + } + + // --- Parsing Templates --- + + rpc SaveParsingTemplate(SaveParsingTemplateRequest) returns (SaveParsingTemplateResponse) { + option (google.api.http) = { + post: "/api/v1/parsing-templates" + body: "parsing_template" + }; + } + + rpc GetParsingTemplate(GetParsingTemplateRequest) returns (org.apache.airavata.model.appcatalog.parser.ParsingTemplate) { + option (google.api.http) = { + get: "/api/v1/gateways/{gateway_id}/parsing-templates/{template_id}" + }; + } + + rpc GetParsingTemplatesForExperiment(GetParsingTemplatesForExperimentRequest) returns (GetParsingTemplatesForExperimentResponse) { + option (google.api.http) = { + get: "/api/v1/gateways/{gateway_id}/experiments/{experiment_id}/parsing-templates" + }; + } + + rpc ListAllParsingTemplates(ListAllParsingTemplatesRequest) returns (ListAllParsingTemplatesResponse) { + option (google.api.http) = { + get: "/api/v1/gateways/{gateway_id}/parsing-templates" + }; + } + + rpc RemoveParsingTemplate(RemoveParsingTemplateRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/gateways/{gateway_id}/parsing-templates/{template_id}" + }; + } +} + +// --- Parser Request/Response messages --- + +message SaveParserRequest { + org.apache.airavata.model.appcatalog.parser.Parser parser = 1; +} + +message SaveParserResponse { + string parser_id = 1; +} + +message GetParserRequest { + string gateway_id = 1; + string parser_id = 2; +} + +message ListAllParsersRequest { + string gateway_id = 1; +} + +message ListAllParsersResponse { + repeated org.apache.airavata.model.appcatalog.parser.Parser parsers = 1; +} + +message RemoveParserRequest { + string gateway_id = 1; + string parser_id = 2; +} + +// --- Parsing Template Request/Response messages --- + +message SaveParsingTemplateRequest { + org.apache.airavata.model.appcatalog.parser.ParsingTemplate parsing_template = 1; +} + +message SaveParsingTemplateResponse { + string template_id = 1; +} + +message GetParsingTemplateRequest { + string gateway_id = 1; + string template_id = 2; +} + +message GetParsingTemplatesForExperimentRequest { + string gateway_id = 1; + string experiment_id = 2; +} + +message GetParsingTemplatesForExperimentResponse { + repeated org.apache.airavata.model.appcatalog.parser.ParsingTemplate parsing_templates = 1; +} + +message ListAllParsingTemplatesRequest { + string gateway_id = 1; +} + +message ListAllParsingTemplatesResponse { + repeated org.apache.airavata.model.appcatalog.parser.ParsingTemplate parsing_templates = 1; +} + +message RemoveParsingTemplateRequest { + string gateway_id = 1; + string template_id = 2; +} diff --git a/airavata-api/src/main/proto/services/resource_service.proto b/airavata-api/src/main/proto/services/resource_service.proto new file mode 100644 index 0000000000..77d6c3880c --- /dev/null +++ b/airavata-api/src/main/proto/services/resource_service.proto @@ -0,0 +1,498 @@ +// 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.api.resource; + +option java_package = "org.apache.airavata.api.resource"; +option java_multiple_files = true; + +import "google/api/annotations.proto"; +import "google/protobuf/empty.proto"; +import "org/apache/airavata/model/appcatalog/computeresource/compute_resource.proto"; +import "org/apache/airavata/model/appcatalog/storageresource/storage_resource.proto"; +import "org/apache/airavata/model/data/movement/data_movement.proto"; + +// ResourceService provides RPCs for managing compute resources, storage resources, +// job submissions, and data movements. +service ResourceService { + + // --- Compute Resources --- + + rpc RegisterComputeResource(RegisterComputeResourceRequest) returns (RegisterComputeResourceResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources" + body: "compute_resource" + }; + } + + rpc GetComputeResource(GetComputeResourceRequest) returns (org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription) { + option (google.api.http) = { + get: "/api/v1/compute-resources/{compute_resource_id}" + }; + } + + rpc UpdateComputeResource(UpdateComputeResourceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/compute-resources/{compute_resource_id}" + body: "compute_resource" + }; + } + + rpc DeleteComputeResource(DeleteComputeResourceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/compute-resources/{compute_resource_id}" + }; + } + + rpc GetAllComputeResourceNames(GetAllComputeResourceNamesRequest) returns (GetAllComputeResourceNamesResponse) { + option (google.api.http) = { + get: "/api/v1/compute-resources:names" + }; + } + + // --- Storage Resources --- + + rpc RegisterStorageResource(RegisterStorageResourceRequest) returns (RegisterStorageResourceResponse) { + option (google.api.http) = { + post: "/api/v1/storage-resources" + body: "storage_resource" + }; + } + + rpc GetStorageResource(GetStorageResourceRequest) returns (org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription) { + option (google.api.http) = { + get: "/api/v1/storage-resources/{storage_resource_id}" + }; + } + + rpc UpdateStorageResource(UpdateStorageResourceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/storage-resources/{storage_resource_id}" + body: "storage_resource" + }; + } + + rpc DeleteStorageResource(DeleteStorageResourceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/storage-resources/{storage_resource_id}" + }; + } + + rpc GetAllStorageResourceNames(GetAllStorageResourceNamesRequest) returns (GetAllStorageResourceNamesResponse) { + option (google.api.http) = { + get: "/api/v1/storage-resources:names" + }; + } + + // --- Job Submissions --- + + rpc AddLocalSubmission(AddLocalSubmissionRequest) returns (AddLocalSubmissionResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/local-submissions" + body: "local_submission" + }; + } + + rpc UpdateLocalSubmission(UpdateLocalSubmissionRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/local-submissions/{submission_id}" + body: "local_submission" + }; + } + + rpc GetLocalJobSubmission(GetLocalJobSubmissionRequest) returns (org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission) { + option (google.api.http) = { + get: "/api/v1/local-submissions/{submission_id}" + }; + } + + rpc AddSSHJobSubmission(AddSSHJobSubmissionRequest) returns (AddSSHJobSubmissionResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/ssh-submissions" + body: "ssh_job_submission" + }; + } + + rpc AddSSHForkJobSubmission(AddSSHForkJobSubmissionRequest) returns (AddSSHForkJobSubmissionResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/ssh-fork-submissions" + body: "ssh_job_submission" + }; + } + + rpc GetSSHJobSubmission(GetSSHJobSubmissionRequest) returns (org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission) { + option (google.api.http) = { + get: "/api/v1/ssh-submissions/{submission_id}" + }; + } + + rpc UpdateSSHJobSubmission(UpdateSSHJobSubmissionRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/ssh-submissions/{submission_id}" + body: "ssh_job_submission" + }; + } + + rpc AddCloudJobSubmission(AddCloudJobSubmissionRequest) returns (AddCloudJobSubmissionResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/cloud-submissions" + body: "cloud_job_submission" + }; + } + + rpc GetCloudJobSubmission(GetCloudJobSubmissionRequest) returns (org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission) { + option (google.api.http) = { + get: "/api/v1/cloud-submissions/{submission_id}" + }; + } + + rpc UpdateCloudJobSubmission(UpdateCloudJobSubmissionRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/cloud-submissions/{submission_id}" + body: "cloud_job_submission" + }; + } + + rpc AddUnicoreJobSubmission(AddUnicoreJobSubmissionRequest) returns (AddUnicoreJobSubmissionResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/unicore-submissions" + body: "unicore_job_submission" + }; + } + + rpc GetUnicoreJobSubmission(GetUnicoreJobSubmissionRequest) returns (org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission) { + option (google.api.http) = { + get: "/api/v1/unicore-submissions/{submission_id}" + }; + } + + rpc UpdateUnicoreJobSubmission(UpdateUnicoreJobSubmissionRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/unicore-submissions/{submission_id}" + body: "unicore_job_submission" + }; + } + + rpc DeleteJobSubmissionInterface(DeleteJobSubmissionInterfaceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/compute-resources/{compute_resource_id}/job-submissions/{submission_id}" + }; + } + + // --- Data Movements --- + + rpc AddLocalDataMovement(AddLocalDataMovementRequest) returns (AddLocalDataMovementResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/local-data-movements" + body: "local_data_movement" + }; + } + + rpc UpdateLocalDataMovement(UpdateLocalDataMovementRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/local-data-movements/{data_movement_id}" + body: "local_data_movement" + }; + } + + rpc GetLocalDataMovement(GetLocalDataMovementRequest) returns (org.apache.airavata.model.data.movement.LOCALDataMovement) { + option (google.api.http) = { + get: "/api/v1/local-data-movements/{data_movement_id}" + }; + } + + rpc AddSCPDataMovement(AddSCPDataMovementRequest) returns (AddSCPDataMovementResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/scp-data-movements" + body: "scp_data_movement" + }; + } + + rpc UpdateSCPDataMovement(UpdateSCPDataMovementRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/scp-data-movements/{data_movement_id}" + body: "scp_data_movement" + }; + } + + rpc GetSCPDataMovement(GetSCPDataMovementRequest) returns (org.apache.airavata.model.data.movement.SCPDataMovement) { + option (google.api.http) = { + get: "/api/v1/scp-data-movements/{data_movement_id}" + }; + } + + rpc AddGridFTPDataMovement(AddGridFTPDataMovementRequest) returns (AddGridFTPDataMovementResponse) { + option (google.api.http) = { + post: "/api/v1/compute-resources/{compute_resource_id}/gridftp-data-movements" + body: "gridftp_data_movement" + }; + } + + rpc UpdateGridFTPDataMovement(UpdateGridFTPDataMovementRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put: "/api/v1/gridftp-data-movements/{data_movement_id}" + body: "gridftp_data_movement" + }; + } + + rpc GetGridFTPDataMovement(GetGridFTPDataMovementRequest) returns (org.apache.airavata.model.data.movement.GridFTPDataMovement) { + option (google.api.http) = { + get: "/api/v1/gridftp-data-movements/{data_movement_id}" + }; + } + + rpc DeleteDataMovementInterface(DeleteDataMovementInterfaceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/compute-resources/{compute_resource_id}/data-movements/{data_movement_id}" + }; + } + + // --- Batch Queue --- + + rpc DeleteBatchQueue(DeleteBatchQueueRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/api/v1/compute-resources/{compute_resource_id}/batch-queues/{queue_name}" + }; + } +} + +// --- Compute Resource Request/Response messages --- + +message RegisterComputeResourceRequest { + org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription compute_resource = 1; +} + +message RegisterComputeResourceResponse { + string compute_resource_id = 1; +} + +message GetComputeResourceRequest { + string compute_resource_id = 1; +} + +message UpdateComputeResourceRequest { + string compute_resource_id = 1; + org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription compute_resource = 2; +} + +message DeleteComputeResourceRequest { + string compute_resource_id = 1; +} + +message GetAllComputeResourceNamesRequest {} + +message GetAllComputeResourceNamesResponse { + map<string, string> compute_resource_names = 1; +} + +// --- Storage Resource Request/Response messages --- + +message RegisterStorageResourceRequest { + org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription storage_resource = 1; +} + +message RegisterStorageResourceResponse { + string storage_resource_id = 1; +} + +message GetStorageResourceRequest { + string storage_resource_id = 1; +} + +message UpdateStorageResourceRequest { + string storage_resource_id = 1; + org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription storage_resource = 2; +} + +message DeleteStorageResourceRequest { + string storage_resource_id = 1; +} + +message GetAllStorageResourceNamesRequest {} + +message GetAllStorageResourceNamesResponse { + map<string, string> storage_resource_names = 1; +} + +// --- Job Submission Request/Response messages --- + +message AddLocalSubmissionRequest { + string compute_resource_id = 1; + int32 priority = 2; + org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission local_submission = 3; +} + +message AddLocalSubmissionResponse { + string submission_id = 1; +} + +message UpdateLocalSubmissionRequest { + string submission_id = 1; + org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission local_submission = 2; +} + +message GetLocalJobSubmissionRequest { + string submission_id = 1; +} + +message AddSSHJobSubmissionRequest { + string compute_resource_id = 1; + int32 priority = 2; + org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission ssh_job_submission = 3; +} + +message AddSSHJobSubmissionResponse { + string submission_id = 1; +} + +message AddSSHForkJobSubmissionRequest { + string compute_resource_id = 1; + int32 priority = 2; + org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission ssh_job_submission = 3; +} + +message AddSSHForkJobSubmissionResponse { + string submission_id = 1; +} + +message GetSSHJobSubmissionRequest { + string submission_id = 1; +} + +message UpdateSSHJobSubmissionRequest { + string submission_id = 1; + org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission ssh_job_submission = 2; +} + +message AddCloudJobSubmissionRequest { + string compute_resource_id = 1; + int32 priority = 2; + org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission cloud_job_submission = 3; +} + +message AddCloudJobSubmissionResponse { + string submission_id = 1; +} + +message GetCloudJobSubmissionRequest { + string submission_id = 1; +} + +message UpdateCloudJobSubmissionRequest { + string submission_id = 1; + org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission cloud_job_submission = 2; +} + +message AddUnicoreJobSubmissionRequest { + string compute_resource_id = 1; + int32 priority = 2; + org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission unicore_job_submission = 3; +} + +message AddUnicoreJobSubmissionResponse { + string submission_id = 1; +} + +message GetUnicoreJobSubmissionRequest { + string submission_id = 1; +} + +message UpdateUnicoreJobSubmissionRequest { + string submission_id = 1; + org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission unicore_job_submission = 2; +} + +message DeleteJobSubmissionInterfaceRequest { + string compute_resource_id = 1; + string submission_id = 2; +} + +// --- Data Movement Request/Response messages --- + +message AddLocalDataMovementRequest { + string compute_resource_id = 1; + int32 priority = 2; + string dm_type = 3; + org.apache.airavata.model.data.movement.LOCALDataMovement local_data_movement = 4; +} + +message AddLocalDataMovementResponse { + string data_movement_id = 1; +} + +message UpdateLocalDataMovementRequest { + string data_movement_id = 1; + org.apache.airavata.model.data.movement.LOCALDataMovement local_data_movement = 2; +} + +message GetLocalDataMovementRequest { + string data_movement_id = 1; +} + +message AddSCPDataMovementRequest { + string compute_resource_id = 1; + int32 priority = 2; + string dm_type = 3; + org.apache.airavata.model.data.movement.SCPDataMovement scp_data_movement = 4; +} + +message AddSCPDataMovementResponse { + string data_movement_id = 1; +} + +message UpdateSCPDataMovementRequest { + string data_movement_id = 1; + org.apache.airavata.model.data.movement.SCPDataMovement scp_data_movement = 2; +} + +message GetSCPDataMovementRequest { + string data_movement_id = 1; +} + +message AddGridFTPDataMovementRequest { + string compute_resource_id = 1; + int32 priority = 2; + string dm_type = 3; + org.apache.airavata.model.data.movement.GridFTPDataMovement gridftp_data_movement = 4; +} + +message AddGridFTPDataMovementResponse { + string data_movement_id = 1; +} + +message UpdateGridFTPDataMovementRequest { + string data_movement_id = 1; + org.apache.airavata.model.data.movement.GridFTPDataMovement gridftp_data_movement = 2; +} + +message GetGridFTPDataMovementRequest { + string data_movement_id = 1; +} + +message DeleteDataMovementInterfaceRequest { + string compute_resource_id = 1; + string data_movement_id = 2; +} + +// --- Batch Queue Request/Response messages --- + +message DeleteBatchQueueRequest { + string compute_resource_id = 1; + string queue_name = 2; +}
