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


Reply via email to