|
43 | 43 | from nemo_run.core.packaging.git import GitArchivePackager |
44 | 44 | from nemo_run.core.serialization.zlib_json import ZlibJSONSerializer |
45 | 45 | from nemo_run.core.tunnel.callback import Callback |
46 | | -from nemo_run.core.tunnel.client import LocalTunnel, SSHConfigFile, SSHTunnel, Tunnel |
| 46 | +from nemo_run.core.tunnel.client import LocalTunnel, PackagingJob, SSHConfigFile, SSHTunnel, Tunnel |
47 | 47 | from nemo_run.core.tunnel.server import TunnelMetadata, server_dir |
48 | 48 | from nemo_run.devspace.base import DevSpace |
49 | 49 |
|
@@ -388,7 +388,7 @@ def __post_init__(self): |
388 | 388 | self.wait_time_for_group_job = 0 |
389 | 389 |
|
390 | 390 | def info(self) -> str: |
391 | | - return f"{self.__class__.__qualname__} on {self.tunnel._key}" |
| 391 | + return f"{self.__class__.__qualname__} on {self.tunnel.key}" |
392 | 392 |
|
393 | 393 | def alloc(self, job_name="interactive"): |
394 | 394 | self.job_name = f"{self.job_name_prefix}{job_name}" |
@@ -544,6 +544,21 @@ def package(self, packager: Packager, job_name: str): |
544 | 544 | ) |
545 | 545 | return |
546 | 546 |
|
| 547 | + if packager.symlink_from_remote_dir: |
| 548 | + logger.info( |
| 549 | + f"Packager {packager} is configured to symlink from remote dir. Skipping packaging." |
| 550 | + ) |
| 551 | + if type(packager) is Packager: |
| 552 | + self.tunnel.packaging_jobs[job_name] = PackagingJob(symlink=False) |
| 553 | + return |
| 554 | + |
| 555 | + self.tunnel.packaging_jobs[job_name] = PackagingJob( |
| 556 | + symlink=True, |
| 557 | + src_path=packager.symlink_from_remote_dir, |
| 558 | + dst_path=os.path.join(self.tunnel.job_dir, Path(self.job_dir).name, "code"), |
| 559 | + ) |
| 560 | + return |
| 561 | + |
547 | 562 | assert self.experiment_id, "Executor not assigned to an experiment." |
548 | 563 | if isinstance(packager, GitArchivePackager): |
549 | 564 | output = subprocess.run( |
@@ -573,7 +588,12 @@ def package(self, packager: Packager, job_name: str): |
573 | 588 | f"tar -xvzf {local_pkg} -C {local_code_extraction_path} --ignore-zeros", hide=True |
574 | 589 | ) |
575 | 590 |
|
576 | | - self.tunnel.packaging_jobs.add(job_name) |
| 591 | + self.tunnel.packaging_jobs[job_name] = PackagingJob( |
| 592 | + symlink=False, |
| 593 | + dst_path=None |
| 594 | + if type(packager) is Packager |
| 595 | + else os.path.join(self.tunnel.job_dir, Path(self.job_dir).name, "code"), |
| 596 | + ) |
577 | 597 |
|
578 | 598 | def parse_deps(self) -> list[str]: |
579 | 599 | """ |
|
0 commit comments