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

Reply via email to