You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ya...@apache.org on 2025/08/03 05:47:45 UTC
(airavata) branch sdk-batch-jobs updated (859a7d5445 -> a50551ce84)
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a change to branch sdk-batch-jobs
in repository https://gitbox.apache.org/repos/asf/airavata.git
from 859a7d5445 commit app scripts into airavata-agent/application
new 77d93be30b bump version to 2.2.2, fix bug in namd.sh
new a50551ce84 fix bugs and bump version to 2.2.3
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../airavata_experiments/airavata.py | 16 ++++++-------
.../airavata_experiments/task.py | 4 +++-
dev-tools/airavata-python-sdk/pyproject.toml | 2 +-
.../airavata-agent/application/namd.sh | 28 ++++++++++------------
4 files changed, 25 insertions(+), 25 deletions(-)
(airavata) 01/02: bump version to 2.2.2, fix bug in namd.sh
Posted by ya...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a commit to branch sdk-batch-jobs
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 77d93be30b2311c1800e44a5449aec18965fcb96
Author: yasithdev <ya...@icloud.com>
AuthorDate: Sun Aug 3 00:16:18 2025 -0500
bump version to 2.2.2, fix bug in namd.sh
---
.../airavata_experiments/airavata.py | 4 ++--
dev-tools/airavata-python-sdk/pyproject.toml | 2 +-
.../airavata-agent/application/namd.sh | 28 ++++++++++------------
3 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py b/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py
index fd83596c08..8dbebd6b5e 100644
--- a/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py
+++ b/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py
@@ -412,7 +412,7 @@ class AiravataOperator:
"""
import os
- fp = os.path.join("/data", remote_file)
+ fp = os.path.join(".", remote_file)
res = requests.post(f"{self.connection_svc_url()}/agent/execute/shell", json={
"agentId": agent_ref,
"envName": agent_ref,
@@ -487,7 +487,7 @@ class AiravataOperator:
"""
import os
- fp = os.path.join("/data", remote_file)
+ fp = os.path.join(".", remote_file)
res = requests.post(f"{self.connection_svc_url()}/agent/execute/shell", json={
"agentId": agent_ref,
"envName": agent_ref,
diff --git a/dev-tools/airavata-python-sdk/pyproject.toml b/dev-tools/airavata-python-sdk/pyproject.toml
index 148b2597f9..04620578c0 100644
--- a/dev-tools/airavata-python-sdk/pyproject.toml
+++ b/dev-tools/airavata-python-sdk/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "airavata-python-sdk"
-version = "2.2.1"
+version = "2.2.2"
description = "Apache Airavata Python SDK"
readme = "README.md"
license = "Apache-2.0"
diff --git a/modules/agent-framework/airavata-agent/application/namd.sh b/modules/agent-framework/airavata-agent/application/namd.sh
index fd1297b23b..240cc2ad10 100644
--- a/modules/agent-framework/airavata-agent/application/namd.sh
+++ b/modules/agent-framework/airavata-agent/application/namd.sh
@@ -10,6 +10,14 @@ export CS_HOME=$HOME/cybershuttle
export MAMBA_ROOT_PREFIX=$CS_HOME/scratch
export TMPDIR=$CS_HOME/scratch/tmp
+# initialize scratch/tmp and scratch/envs (node-local)
+CS_TEMP=$(readlink $CS_HOME/scratch/tmp)
+CS_ENVS=$(readlink $CS_HOME/scratch/envs)
+[ -n "$CS_TEMP" ] && mkdir -p $CS_TEMP
+[ -n "$CS_ENVS" ] && mkdir -p $CS_ENVS
+NAMD_EXTRA_ARGS=()
+FIFO=$(mktemp -u)
+mkfifo $FIFO
# ----------------------------------------------------------------------
# PARSE COMMAND LINE ARGUMENTS
@@ -35,12 +43,12 @@ while getopts t:n:i:a:s: option; do
module reset
if [ $EXECUTION_TYPE = "CPU" ]; then
# one replica at a time
- echo 0 > $FIFO
+ echo 0 > $FIFO &
NAMD_PATH=$NAMD_CPU_PATH
module load $NAMD_CPU_MODULES
elif [ $EXECUTION_TYPE = "GPU" ]; then
# one replica per GPU
- for ((i=0; i<SLURM_GPUS_ON_NODE; i++)); do echo "$i" > $FIFO; done
+ for ((i=0; i<${SLURM_GPUS_ON_NODE:-0}; i++)); do echo "$i" > $FIFO & done
NAMD_PATH=$NAMD_GPU_PATH
NAMD_EXTRA_ARGS+=("--CUDASOAintegrate" "on")
module load $NAMD_GPU_MODULES
@@ -52,7 +60,7 @@ while getopts t:n:i:a:s: option; do
echo "NUM_REPLICAS=$NUM_REPLICAS"
;;
i)
- NAMD_INPUT_FILES=$(find $WORKDIR -maxdepth 1 -type f ! -name "*slurm*")
+ NAMD_INPUT_FILES=$(find $WORKDIR -maxdepth 1 -type f ! -name "*slurm*" ! -name "*.stdout" ! -name "*.stderr")
NAMD_CONF_FILE=$OPTARG
echo "NAMD_INPUT_FILES=$NAMD_INPUT_FILES"
echo "NAMD_CONF_FILE=$NAMD_CONF_FILE"
@@ -82,21 +90,11 @@ shift $((OPTIND - 1))
# RUN AGENT
# ----------------------------------------------------------------------
-# initialize scratch/tmp and scratch/envs (node-local)
-CS_TEMP=$(readlink $CS_HOME/scratch/tmp)
-CS_ENVS=$(readlink $CS_HOME/scratch/envs)
-[ -n "$CS_TEMP" ] && mkdir -p $CS_TEMP
-[ -n "$CS_ENVS" ] && mkdir -p $CS_ENVS
-
-NAMD_EXTRA_ARGS=()
-FIFO=$(mktemp -u)
-mkfifo $FIFO
-
wget -q https://github.com/cyber-shuttle/binaries/releases/download/1.0.1/airavata-agent-linux-amd64 -O $WORKDIR/airavata-agent
wget -q https://github.com/cyber-shuttle/binaries/releases/download/1.0.1/kernel.py -O $WORKDIR/kernel.py
wget -q https://github.com/mamba-org/micromamba-releases/releases/download/2.3.0-1/micromamba-linux-64 -O $WORKDIR/micromamba
chmod +x $WORKDIR/airavata-agent $WORKDIR/micromamba
-$WORKDIR/airavata-agent --server "$AGENT_SERVER:19900" --agent "$AGENT_ID" --environ base --lib "" --pip "" &
+$WORKDIR/airavata-agent --server "$AGENT_SERVER:19900" --agent "$AGENT_ID" --environ "$AGENT_ID" --lib "" --pip "" &
AGENT_PID=$!
trap 'kill -TERM $AGENT_PID' EXIT
echo "Agent started with PID $AGENT_PID"
@@ -119,7 +117,7 @@ for REPLICA_ID in $(seq 1 $NUM_REPLICAS); do
$REPLICA_DIR/$NAMD_CONF_FILE >$REPLICA_DIR/$NAMD_CONF_FILE.out 2>$REPLICA_DIR/$NAMD_CONF_FILE.err
[[ $EXECUTION_TYPE == "GPU" ]] && unset CUDA_VISIBLE_DEVICES
- echo $TOKEN > $FIFO
+ echo $TOKEN > $FIFO &
for FILE in $(ls $REPLICA_DIR/*.*); do
mv $FILE $REPLICA_ID"_"$(basename $FILE)
(airavata) 02/02: fix bugs and bump version to 2.2.3
Posted by ya...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a commit to branch sdk-batch-jobs
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit a50551ce84a094392612a45f9af0b1f8b2b7c182
Author: yasithdev <ya...@icloud.com>
AuthorDate: Sun Aug 3 00:47:39 2025 -0500
fix bugs and bump version to 2.2.3
---
.../airavata-python-sdk/airavata_experiments/airavata.py | 12 ++++++------
dev-tools/airavata-python-sdk/airavata_experiments/task.py | 4 +++-
dev-tools/airavata-python-sdk/pyproject.toml | 2 +-
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py b/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py
index 8dbebd6b5e..f5ca757de1 100644
--- a/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py
+++ b/dev-tools/airavata-python-sdk/airavata_experiments/airavata.py
@@ -330,14 +330,14 @@ class AiravataOperator:
elif process_id is not None and agent_ref is not None:
assert len(local_files) == 1, f"Expected 1 file, got {len(local_files)}"
file = local_files[0]
- fp = os.path.join("/data", file.name)
+ fp = os.path.join(".", file.name)
rawdata = file.read_bytes()
b64data = base64.b64encode(rawdata).decode()
res = requests.post(f"{self.connection_svc_url()}/agent/execute/shell", json={
"agentId": agent_ref,
"envName": agent_ref,
"workingDir": ".",
- "arguments": ["sh", "-c", f"echo {b64data} | base64 -d > {fp}"]
+ "arguments": [f"echo {b64data} | base64 -d > {fp}"]
})
data = res.json()
if data["error"] is not None:
@@ -379,7 +379,7 @@ class AiravataOperator:
"agentId": agent_ref,
"envName": agent_ref,
"workingDir": ".",
- "arguments": ["sh", "-c", r"find /data -type d -name 'venv' -prune -o -type f -printf '%P\n' | sort"]
+ "arguments": [r"find . -type f -printf '%P\n' | sort"]
})
data = res.json()
if data["error"] is not None:
@@ -417,7 +417,7 @@ class AiravataOperator:
"agentId": agent_ref,
"envName": agent_ref,
"workingDir": ".",
- "arguments": ["sh", "-c", f"cat {fp} | base64 -w0"]
+ "arguments": [f"cat {fp} | base64 -w0"]
})
data = res.json()
if data["error"] is not None:
@@ -461,7 +461,7 @@ class AiravataOperator:
"agentId": agent_ref,
"envName": agent_ref,
"workingDir": ".",
- "arguments": ["sh", "-c", f"{cmd} | base64 -w0"]
+ "arguments": [f"{cmd} | base64 -w0"]
})
data = res.json()
if data["error"] is not None:
@@ -492,7 +492,7 @@ class AiravataOperator:
"agentId": agent_ref,
"envName": agent_ref,
"workingDir": ".",
- "arguments": ["sh", "-c", f"cat {fp} | base64 -w0"]
+ "arguments": [f"cat {fp} | base64 -w0"]
})
data = res.json()
if data["error"] is not None:
diff --git a/dev-tools/airavata-python-sdk/airavata_experiments/task.py b/dev-tools/airavata-python-sdk/airavata_experiments/task.py
index 3700bf2f66..fea221b1cf 100644
--- a/dev-tools/airavata-python-sdk/airavata_experiments/task.py
+++ b/dev-tools/airavata-python-sdk/airavata_experiments/task.py
@@ -73,7 +73,9 @@ class Task(pydantic.BaseModel):
from pathlib import Path
Path(local_dir).mkdir(parents=True, exist_ok=True)
try:
- return self.runtime.download(file, local_dir, self)
+ saved_path = self.runtime.download(file, local_dir, self)
+ print(f"[Remote] Downloaded {file} -> {saved_path}")
+ return saved_path
except Exception as e:
print(f"[Remote] Failed to download file: {repr(e)}")
return ""
diff --git a/dev-tools/airavata-python-sdk/pyproject.toml b/dev-tools/airavata-python-sdk/pyproject.toml
index 04620578c0..d995930f1b 100644
--- a/dev-tools/airavata-python-sdk/pyproject.toml
+++ b/dev-tools/airavata-python-sdk/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "airavata-python-sdk"
-version = "2.2.2"
+version = "2.2.3"
description = "Apache Airavata Python SDK"
readme = "README.md"
license = "Apache-2.0"