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 abcce2a8b8 fix sdk bugs and agent bugs
abcce2a8b8 is described below
commit abcce2a8b8c89a0f70ab10a7fb9f7d923f28408f
Author: yasithdev <[email protected]>
AuthorDate: Tue Apr 8 06:36:59 2025 -0400
fix sdk bugs and agent bugs
---
.../airavata_jupyter_magic/__init__.py | 30 +++++++++++++++-------
modules/agent-framework/airavata-agent/agent.go | 4 +--
modules/agent-framework/airavata-agent/agent.sh | 2 +-
3 files changed, 24 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 8910da5a01..4f305cf425 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
@@ -24,7 +24,7 @@ from .device_auth import DeviceFlowAuthenticator
# DATA STRUCTURES
-class InvalidStateError(Exception):
+class InvalidStateError(BaseException):
pass
@@ -146,21 +146,21 @@ def is_runtime_ready(access_token: str, rt: RuntimeInfo,
rt_name: str):
if pstate in PENDING_STATES:
return False, f"PROCESS_{pstate.name}"
if pstate in TERMINAL_STATES:
- msg = f"Runtime={rt_name} is in state=PROCESS_{pstate.name}"
+ msg = f"Runtime={rt_name} is in state={pstate.name}"
raise InvalidStateError(msg)
# third, check the state of agent
url = f"{api_base_url}/api/v1/agent/{rt.agentId}"
res = requests.get(url)
code = res.status_code
- astate = "AGENT_CREATED"
+ astate = "CREATING_WORKSPACE"
if code == 202:
data: dict = res.json()
if data.get("agentUp", False):
- astate = "READY"
+ astate = "CONNECTED"
else:
print(f"[{code}] Runtime status check failed: {res.text}")
- return astate == "READY", astate
+ return astate == "CONNECTED", astate
def get_experiment_state(experiment_id: str, headers: dict) ->
tuple[ProcessState, str]:
@@ -206,10 +206,22 @@ def get_process_state(experiment_id: str, headers: dict)
-> tuple[str, ProcessSt
pid = data.get("processId")
procs = data.get("processStatuses")
if procs and len(procs):
+ tMax, wait, busy, done = 0, 0, 0, 0
for proc in procs:
- ps = ProcessState[proc.get("state")]
- if ps > pstate:
- pstate = ps
+ t = int(proc.get("timeOfStateChange"))
+ s = ProcessState[proc.get("state")]
+ if t >= tMax:
+ tMax, busy, done = t, 0, 0
+ if t == tMax:
+ wait += s in PENDING_STATES
+ done += s in TERMINAL_STATES
+ busy += s not in [*PENDING_STATES, *TERMINAL_STATES]
+ if busy == 0 and done == 0:
+ pstate = ProcessState.CONFIGURING_WORKSPACE
+ elif wait == 0 and busy == 0:
+ pstate = ProcessState.COMPLETED
+ else:
+ pstate = ProcessState.EXECUTING
else:
time.sleep(5)
return pid, pstate
@@ -365,7 +377,7 @@ def wait_until_runtime_ready(access_token: str, rt_name:
str):
while True:
ready, rstate = is_runtime_ready(access_token, rt, rt_name)
if ready:
- status.update(f"Connecting to={rt_name}... status=READY")
+ status.update(f"Connecting to={rt_name}... status=CONNECTED")
break
else:
status.update(f"Connecting to={rt_name}... status={rstate}")
diff --git a/modules/agent-framework/airavata-agent/agent.go
b/modules/agent-framework/airavata-agent/agent.go
index 9d8619dd68..bd6461b801 100644
--- a/modules/agent-framework/airavata-agent/agent.go
+++ b/modules/agent-framework/airavata-agent/agent.go
@@ -244,12 +244,12 @@ func createEnv(stream Stream, executionId string, envName
string, envLibs []stri
func startJupyterKernel(envName string) int {
log.Printf("[agent.go] startJupyterKernel() Starting python server in
env: %s...\n", envName)
// Create temp file for unix socket
- log.Fatalf("[agent.go] startJupyterKernel() creating unix socket...\n")
+ log.Printf("[agent.go] startJupyterKernel() creating unix socket...\n")
tmpFile, err := os.CreateTemp(os.TempDir(), "kernel-*.sock")
if err != nil {
log.Fatalf("[agent.go] startJupyterKernel() Failed to create
unix socket: %v\n", err)
}
- log.Fatalf("[agent.go] startJupyterKernel() created unix socket: %s\n",
tmpFile.Name())
+ log.Printf("[agent.go] startJupyterKernel() created unix socket: %s\n",
tmpFile.Name())
defer tmpFile.Close()
os.Setenv("KERNEL_SOCK", tmpFile.Name())
// Run command
diff --git a/modules/agent-framework/airavata-agent/agent.sh
b/modules/agent-framework/airavata-agent/agent.sh
index 6c7e9a82a1..ad9bd24eb5 100755
--- a/modules/agent-framework/airavata-agent/agent.sh
+++ b/modules/agent-framework/airavata-agent/agent.sh
@@ -81,4 +81,4 @@ singularity exec \
--env MAMBA_ROOT_PREFIX=/scratch \
--env TMPDIR=/scratch/tmp \
$CS_HOME/container/$CONTAINER \
- bash -c "micromamba create -n $AGENT && /opt/airavata-agent --server
$SERVER:19900 --agent $AGENT --lib $LIBRARIES --pip $PIP"
+ bash -c "micromamba create -n $AGENT && /opt/airavata-agent --server
\"$SERVER:19900\" --agent \"$AGENT\" --lib \"$LIBRARIES\" --pip \"$PIP\""