|
158 | 158 | Should be in the form '{NAME}={SECRET_NAME}'.""",
|
159 | 159 | multiple=True,
|
160 | 160 | )
|
| 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 | +) |
161 | 168 | @click.option(
|
162 | 169 | "--nfs / --no-nfs",
|
163 | 170 | default=None,
|
@@ -297,6 +304,7 @@ def run(
|
297 | 304 | venv: Optional[str] = None,
|
298 | 305 | env: Optional[Tuple[str, ...]] = None,
|
299 | 306 | env_secret: Optional[Tuple[str, ...]] = None,
|
| 307 | + dataset_secret: Optional[Tuple[str, ...]] = None, |
300 | 308 | timeout: int = 0,
|
301 | 309 | nfs: Optional[bool] = None,
|
302 | 310 | show_logs: bool = True,
|
@@ -419,6 +427,14 @@ def run(
|
419 | 427 | raise ValueError(f"Invalid --env-secret option: '{e}'")
|
420 | 428 | env_secrets.append((env_secret_name, secret))
|
421 | 429 |
|
| 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 | + |
422 | 438 | mounts = []
|
423 | 439 | for m in mount or []:
|
424 | 440 | try:
|
@@ -473,6 +489,7 @@ def run(
|
473 | 489 | datasets=datasets_to_use,
|
474 | 490 | env=env_vars,
|
475 | 491 | env_secrets=env_secrets,
|
| 492 | + dataset_secrets=dataset_secrets, |
476 | 493 | priority=priority,
|
477 | 494 | install=install,
|
478 | 495 | no_python=no_python,
|
@@ -610,6 +627,7 @@ def build_experiment_spec(
|
610 | 627 | datasets: Optional[List[Tuple[str, Optional[str], str]]] = None,
|
611 | 628 | env: Optional[List[Tuple[str, str]]] = None,
|
612 | 629 | env_secrets: Optional[List[Tuple[str, str]]] = None,
|
| 630 | + dataset_secrets: Optional[List[Tuple[str, str]]] = None, |
613 | 631 | priority: Optional[Union[str, Priority]] = None,
|
614 | 632 | install: Optional[str] = None,
|
615 | 633 | no_python: bool = False,
|
@@ -728,6 +746,9 @@ def build_experiment_spec(
|
728 | 746 | for dataset_id, sub_path, path in datasets:
|
729 | 747 | task_spec = task_spec.with_dataset(path, beaker=dataset_id, sub_path=sub_path)
|
730 | 748 |
|
| 749 | + for secret, mount_path in dataset_secrets or []: |
| 750 | + task_spec = task_spec.with_dataset(mount_path, secret=secret) |
| 751 | + |
731 | 752 | if mounts:
|
732 | 753 | for source, target in mounts:
|
733 | 754 | task_spec = task_spec.with_dataset(target, host_path=source)
|
|
0 commit comments