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