This is an automated email from the ASF dual-hosted git repository. lahirujayathilake pushed a commit to branch agent-framewok-refactoring in repository https://gitbox.apache.org/repos/asf/airavata.git
commit e1bcf296953da0418586f488148ec5992abd2fb1 Author: lahiruj <[email protected]> AuthorDate: Tue Feb 18 04:13:28 2025 -0500 extract process id using exp id --- .../service/controllers/ExperimentController.java | 11 +++++++++++ .../service/handlers/AgentManagementHandler.java | 17 +++++++++++++++++ .../connection/service/models/LaunchAgentResponse.java | 9 +++++++++ 3 files changed, 37 insertions(+) diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java index 2e59fac479..351f3caf2d 100644 --- a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java +++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java @@ -5,6 +5,7 @@ import org.apache.airavata.agent.connection.service.models.LaunchAgentRequest; import org.apache.airavata.agent.connection.service.models.LaunchAgentResponse; import org.apache.airavata.agent.connection.service.models.TerminateAgentResponse; import org.apache.airavata.model.experiment.ExperimentModel; +import org.apache.airavata.model.process.ProcessModel; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -36,4 +37,14 @@ public class ExperimentController { public ResponseEntity<TerminateAgentResponse> terminateExperiment(@PathVariable("expId") String expId) { return ResponseEntity.ok(agentManagementHandler.terminateExperiment(expId)); } + + @GetMapping(value = "/{expId}/process", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<ProcessModel> getEnvProcessModel(@PathVariable("expId") String expId) { + ProcessModel processModel = agentManagementHandler.getEnvProcessModel(expId); + if (processModel == null) { + return ResponseEntity.notFound().build(); + } else { + return ResponseEntity.ok(processModel); + } + } } diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java index bf339233e2..5e810ec020 100644 --- a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java +++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java @@ -12,6 +12,7 @@ import org.apache.airavata.model.application.io.InputDataObjectType; import org.apache.airavata.model.experiment.ExperimentModel; import org.apache.airavata.model.experiment.ExperimentType; import org.apache.airavata.model.experiment.UserConfigurationDataModel; +import org.apache.airavata.model.process.ProcessModel; import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel; import org.apache.thrift.TException; import org.slf4j.Logger; @@ -98,6 +99,22 @@ public class AgentManagementHandler { } } + public ProcessModel getEnvProcessModel(String expId) { + try { + LOGGER.info("Extracting the process model for experiment id: {}", expId); + ExperimentModel expModel = airavataService.airavata().getDetailedExperimentTree(UserContext.authzToken(), expId); + if (expModel.getProcesses() != null && !expModel.getProcesses().isEmpty()) { + return expModel.getProcesses().get(0); + } else { + LOGGER.error("No process found for experiment id: {}", expId); + return null; + } + } catch (TException e) { + LOGGER.error("Error while extracting the process model for experiment id: {}", expId, e); + throw new RuntimeException(e); + } + } + private ExperimentModel generateExperiment(LaunchAgentRequest req, String agentId) throws TException { Airavata.Client airavataClient = airavataService.airavata(); diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/LaunchAgentResponse.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/LaunchAgentResponse.java index fd833fe684..23c5650b33 100644 --- a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/LaunchAgentResponse.java +++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/LaunchAgentResponse.java @@ -3,6 +3,7 @@ package org.apache.airavata.agent.connection.service.models; public class LaunchAgentResponse { private String agentId; private String experimentId; + private String processId; public LaunchAgentResponse(String agentId, String experimentId) { this.agentId = agentId; @@ -24,4 +25,12 @@ public class LaunchAgentResponse { public void setExperimentId(String experimentId) { this.experimentId = experimentId; } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } }
