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"