Skip to content

Commit b2b773f

Browse files
committed
Jobs archive with ds location
1 parent b4f8783 commit b2b773f

4 files changed

Lines changed: 65 additions & 3 deletions

File tree

dapi/__init__.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,22 @@
7878
)
7979

8080

81-
__version__ = "1.1.0"
81+
def _get_version():
82+
"""Read version from pyproject.toml"""
83+
import tomllib
84+
from pathlib import Path
85+
86+
try:
87+
pyproject_path = Path(__file__).parent.parent / "pyproject.toml"
88+
with open(pyproject_path, "rb") as f:
89+
pyproject = tomllib.load(f)
90+
return pyproject["tool"]["poetry"]["version"]
91+
except (FileNotFoundError, KeyError, ImportError):
92+
# Fallback version if pyproject.toml can't be read
93+
return "unknown"
94+
95+
96+
__version__ = _get_version()
8297

8398
__all__ = [
8499
"DSClient",

dapi/client.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ def generate_request(
323323
memory_mb: Optional[int] = None,
324324
queue: Optional[str] = None,
325325
allocation: Optional[str] = None,
326+
archive_system: Optional[str] = None,
327+
archive_path: Optional[str] = None,
326328
# --- Optional Extra Parameters ---
327329
extra_file_inputs: Optional[List[Dict[str, Any]]] = None,
328330
extra_app_args: Optional[List[Dict[str, Any]]] = None,
@@ -353,6 +355,11 @@ def generate_request(
353355
memory_mb (int, optional): Memory in MB. Overrides app default.
354356
queue (str, optional): Execution queue name. Overrides app default.
355357
allocation (str, optional): TACC allocation to charge for compute time.
358+
archive_system (str, optional): Archive system for job outputs. Use "designsafe"
359+
for designsafe.storage.default. If None, uses app default.
360+
archive_path (str, optional): Archive directory path. Can be a full path or just
361+
a directory name in MyData. If None and archive_system is "designsafe",
362+
defaults to "tapis-jobs-archive/${JobCreateDate}/${JobUUID}".
356363
extra_file_inputs (List[Dict[str, Any]], optional): Additional file inputs.
357364
extra_app_args (List[Dict[str, Any]], optional): Additional app arguments.
358365
extra_env_vars (List[Dict[str, Any]], optional): Additional environment variables.
@@ -393,6 +400,8 @@ def generate_request(
393400
memory_mb=memory_mb,
394401
queue=queue,
395402
allocation=allocation,
403+
archive_system=archive_system,
404+
archive_path=archive_path,
396405
extra_file_inputs=extra_file_inputs,
397406
extra_app_args=extra_app_args,
398407
extra_env_vars=extra_env_vars,

dapi/jobs.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ def generate_job_request(
4848
memory_mb: Optional[int] = None,
4949
queue: Optional[str] = None,
5050
allocation: Optional[str] = None,
51+
archive_system: Optional[str] = None,
52+
archive_path: Optional[str] = None,
5153
extra_file_inputs: Optional[List[Dict[str, Any]]] = None,
5254
extra_app_args: Optional[List[Dict[str, Any]]] = None,
5355
extra_env_vars: Optional[List[Dict[str, Any]]] = None,
@@ -78,6 +80,11 @@ def generate_job_request(
7880
memory_mb (int, optional): Memory in MB. Overrides app default.
7981
queue (str, optional): Execution queue name. Overrides app default.
8082
allocation (str, optional): TACC allocation to charge for compute time.
83+
archive_system (str, optional): Archive system for job outputs. If "designsafe" is specified,
84+
uses "designsafe.storage.default". If None, uses app default.
85+
archive_path (str, optional): Archive directory path. Can be a full path or just a directory name
86+
in MyData (e.g., "tapis-jobs-archive"). If None and archive_system is "designsafe",
87+
defaults to "${EffectiveUserId}/tapis-jobs-archive/${JobCreateDate}/${JobUUID}".
8188
extra_file_inputs (List[Dict[str, Any]], optional): Additional file inputs beyond the main input directory.
8289
extra_app_args (List[Dict[str, Any]], optional): Additional application arguments.
8390
extra_env_vars (List[Dict[str, Any]], optional): Additional environment variables.
@@ -128,13 +135,44 @@ def generate_job_request(
128135
final_description = (
129136
description or app_details.description or f"dapi job for {app_details.id}"
130137
)
138+
139+
# Handle archive system configuration
140+
archive_system_id = None
141+
archive_system_dir = None
142+
143+
if archive_system:
144+
if archive_system.lower() == "designsafe":
145+
archive_system_id = "designsafe.storage.default"
146+
# Handle archive path configuration
147+
if archive_path:
148+
# Check if it's a full path or just a directory name
149+
if archive_path.startswith("/") or archive_path.startswith("${"):
150+
# Full path provided
151+
archive_system_dir = archive_path
152+
else:
153+
# Directory name provided, construct the full path
154+
archive_system_dir = f"${{EffectiveUserId}}/{archive_path}/${{JobCreateDate}}/${{JobUUID}}"
155+
else:
156+
# Default path for DesignSafe
157+
archive_system_dir = "${EffectiveUserId}/tapis-jobs-archive/${JobCreateDate}/${JobUUID}"
158+
else:
159+
# Use the provided archive system as-is
160+
archive_system_id = archive_system
161+
if archive_path:
162+
archive_system_dir = archive_path
163+
else:
164+
# Use app defaults
165+
archive_system_id = getattr(job_attrs, "archiveSystemId", None)
166+
archive_system_dir = getattr(job_attrs, "archiveSystemDir", None)
167+
131168
job_req = {
132169
"name": final_job_name,
133170
"appId": app_details.id,
134171
"appVersion": final_app_version,
135172
"description": final_description,
136173
"execSystemId": getattr(job_attrs, "execSystemId", None),
137-
"archiveSystemId": getattr(job_attrs, "archiveSystemId", None),
174+
"archiveSystemId": archive_system_id,
175+
**({"archiveSystemDir": archive_system_dir} if archive_system_dir else {}),
138176
"archiveOnAppError": getattr(job_attrs, "archiveOnAppError", True),
139177
"execSystemLogicalQueue": queue
140178
if queue is not None

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "dapi"
3-
version = "1.0.0"
3+
version = "0.3.0"
44
description = "DesignSafe API"
55
authors = [
66
"Krishna Kumar <krishnak@utexas.edu>",

0 commit comments

Comments
 (0)