Skip to content

Commit 171b503

Browse files
authored
Add --dataset-secret option (#110)
1 parent 1870e9e commit 171b503

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
### Added
11+
12+
- Added `--dataset-secret` option for mounting secrets to files as Beaker datasets.
13+
1014
## [v1.11.3](https://github.com/allenai/beaker-gantry/releases/tag/v1.11.3) - 2025-01-09
1115

1216
## [v1.11.0](https://github.com/allenai/beaker-gantry/releases/tag/v1.11.0) - 2025-01-09

gantry/commands/run.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,13 @@
158158
Should be in the form '{NAME}={SECRET_NAME}'.""",
159159
multiple=True,
160160
)
161+
@click.option(
162+
"--dataset-secret",
163+
type=str,
164+
help="""Mount a Beaker secret to a file as a dataset.
165+
Should be in the form '{SECRET_NAME}:{MOUNT_PATH}'.""",
166+
multiple=True,
167+
)
161168
@click.option(
162169
"--nfs / --no-nfs",
163170
default=None,
@@ -297,6 +304,7 @@ def run(
297304
venv: Optional[str] = None,
298305
env: Optional[Tuple[str, ...]] = None,
299306
env_secret: Optional[Tuple[str, ...]] = None,
307+
dataset_secret: Optional[Tuple[str, ...]] = None,
300308
timeout: int = 0,
301309
nfs: Optional[bool] = None,
302310
show_logs: bool = True,
@@ -419,6 +427,14 @@ def run(
419427
raise ValueError(f"Invalid --env-secret option: '{e}'")
420428
env_secrets.append((env_secret_name, secret))
421429

430+
dataset_secrets = []
431+
for ds in dataset_secret or []:
432+
try:
433+
secret, mount_path = ds.split(":", 1)
434+
except ValueError:
435+
raise ValueError(f"Invalid --dataset-secret option: '{ds}'")
436+
dataset_secrets.append((secret, mount_path))
437+
422438
mounts = []
423439
for m in mount or []:
424440
try:
@@ -473,6 +489,7 @@ def run(
473489
datasets=datasets_to_use,
474490
env=env_vars,
475491
env_secrets=env_secrets,
492+
dataset_secrets=dataset_secrets,
476493
priority=priority,
477494
install=install,
478495
no_python=no_python,
@@ -610,6 +627,7 @@ def build_experiment_spec(
610627
datasets: Optional[List[Tuple[str, Optional[str], str]]] = None,
611628
env: Optional[List[Tuple[str, str]]] = None,
612629
env_secrets: Optional[List[Tuple[str, str]]] = None,
630+
dataset_secrets: Optional[List[Tuple[str, str]]] = None,
613631
priority: Optional[Union[str, Priority]] = None,
614632
install: Optional[str] = None,
615633
no_python: bool = False,
@@ -728,6 +746,9 @@ def build_experiment_spec(
728746
for dataset_id, sub_path, path in datasets:
729747
task_spec = task_spec.with_dataset(path, beaker=dataset_id, sub_path=sub_path)
730748

749+
for secret, mount_path in dataset_secrets or []:
750+
task_spec = task_spec.with_dataset(mount_path, secret=secret)
751+
731752
if mounts:
732753
for source, target in mounts:
733754
task_spec = task_spec.with_dataset(target, host_path=source)

0 commit comments

Comments
 (0)