This is an automated email from the ASF dual-hosted git repository.

yasith pushed a commit to branch cybershuttle-staging
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/cybershuttle-staging by this 
push:
     new 1fb8450b81 move env_name generation to AgentManagementHandler
1fb8450b81 is described below

commit 1fb8450b8178e77b8c896efbe038508f10ba966e
Author: yasithdev <[email protected]>
AuthorDate: Thu Apr 10 16:00:45 2025 -0400

    move env_name generation to AgentManagementHandler
---
 .../airavata-python-sdk/airavata_jupyter_magic/__init__.py  | 12 ++++--------
 .../connection/service/handlers/AgentManagementHandler.java | 13 ++++++++++---
 .../connection/service/models/AgentLaunchResponse.java      | 12 +++++++++++-
 3 files changed, 25 insertions(+), 12 deletions(-)

diff --git 
a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
 
b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
index 71bf0f1e00..33ae0112db 100644
--- 
a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
+++ 
b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
@@ -1,6 +1,5 @@
 import base64
 import binascii
-import hashlib
 import importlib.metadata
 import json
 import os
@@ -74,13 +73,9 @@ RuntimeInfo = NamedTuple('RuntimeInfo', [
     ('group', str),
     ('libraries', list[str]),
     ('pip', list[str]),
+    ('envName', str),
 ])
 
-def getEnvName(rt: RuntimeInfo) -> str:
-    string = ''.join(rt.libraries + rt.pip)
-    return hashlib.sha256(string.encode('utf-8')).hexdigest()
-
-
 PENDING_STATES = [
     ProcessState.CREATED,
     ProcessState.VALIDATED,
@@ -363,6 +358,7 @@ def submit_agent_job(
             group=data['group'],
             libraries=data['libraries'],
             pip=data['pip'],
+            envName=obj['envName']
         )
         state.all_runtimes[rt_name] = rt
         print(f'Requested runtime={rt_name}. state={pstate.name}')
@@ -428,7 +424,7 @@ def restart_runtime_kernel(access_token: str, rt_name: str, 
env_name: str, runti
     # Send the POST request
     res = requests.post(url, headers=headers, data=json.dumps({
         "agentId": runtime.agentId,
-        "envName": getEnvName(runtime),
+        "envName": runtime.envName,
     }))
     data = res.json()
 
@@ -498,7 +494,7 @@ def run_on_runtime(rt_name: str, code_obj: str, result: 
ExecutionResult) -> bool
     url = api_base_url + '/api/v1/agent/execute/jupyter'
     data = {
         "agentId": rt.agentId,
-        "envName": getEnvName(rt),
+        "envName": rt.envName,
         "code": code_obj,
     }
     json_data = json.dumps(data)
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 48c16c16b8..2edd8abb18 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
@@ -106,16 +106,22 @@ public class AgentManagementHandler {
         return sortedLaunchRequest;
     }
 
+    private String generateEnvName(List<String> libraries, List<String> pip) {
+      String key = String.join(",", libraries) + "|" + String.join(",", pip);
+      return Integer.toHexString(key.hashCode());
+    }
+
     public AgentLaunchResponse createAndLaunchExperiment(AgentLaunchRequest 
req) {
         try {
             String agentId = "agent_" + UUID.randomUUID().toString();
+            String envName = generateEnvName(req.getLibraries(), req.getPip());
             LOGGER.info("Creating an Airavata Experiment for {} with agent id 
{}", req.getExperimentName(), agentId);
-            ExperimentModel experiment = generateExperiment(req, agentId);
+            ExperimentModel experiment = generateExperiment(req, agentId, 
envName);
 
             String experimentId = 
airavataService.airavata().createExperiment(UserContext.authzToken(), 
experiment.getGatewayId(), experiment);
             LOGGER.info("Launching the application, Id: {}, Name: {}", 
experimentId, experiment.getExperimentName());
             
airavataService.airavata().launchExperiment(UserContext.authzToken(), 
experimentId, experiment.getGatewayId());
-            return new AgentLaunchResponse(agentId, experimentId);
+            return new AgentLaunchResponse(agentId, experimentId, envName);
         } catch (TException e) {
             LOGGER.error("Error while creating the experiment with the name: 
{}", req.getExperimentName(), e);
             throw new RuntimeException("Error while creating the experiment 
with the name: " + req.getExperimentName(), e);
@@ -148,7 +154,7 @@ public class AgentManagementHandler {
         }
     }
 
-    private ExperimentModel generateExperiment(AgentLaunchRequest req, String 
agentId) throws TException {
+    private ExperimentModel generateExperiment(AgentLaunchRequest req, String 
agentId, String envName) throws TException {
         Airavata.Client airavataClient = airavataService.airavata();
 
         String experimentName = req.getExperimentName();
@@ -195,6 +201,7 @@ public class AgentManagementHandler {
                     if (input != null && input.getName() != null) {
                         switch (input.getName()) {
                             case "agent_id" -> input.setValue(agentId);
+                            case "env_name" -> input.setValue(envName);
                             case "server_url" -> 
input.setValue(airavataService.getServerUrl());
                             case "libraries" -> 
input.setValue(req.getLibraries() != null ? String.join(",", 
req.getLibraries()) : "");
                             case "pip" -> input.setValue(req.getPip() != null 
? String.join(",", req.getPip()) : "");
diff --git 
a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentLaunchResponse.java
 
b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentLaunchResponse.java
index ad833d30b9..99017f12c0 100644
--- 
a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentLaunchResponse.java
+++ 
b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentLaunchResponse.java
@@ -3,11 +3,13 @@ package org.apache.airavata.agent.connection.service.models;
 public class AgentLaunchResponse {
     private String agentId;
     private String experimentId;
+    private String envName;
     private String processId;
 
-    public AgentLaunchResponse(String agentId, String experimentId) {
+    public AgentLaunchResponse(String agentId, String experimentId, String 
envName) {
         this.agentId = agentId;
         this.experimentId = experimentId;
+        this.envName = envName;
     }
 
     public String getAgentId() {
@@ -26,6 +28,14 @@ public class AgentLaunchResponse {
         this.experimentId = experimentId;
     }
 
+    public String getEnvName() {
+        return envName;
+    }
+
+    public void setEnvName(String envName) {
+        this.envName = envName;
+    }
+
     public String getProcessId() {
         return processId;
     }

Reply via email to