|
12 | 12 | from sqlalchemy.orm import joinedload |
13 | 13 |
|
14 | 14 | from dstack._internal.core.errors import SSHError |
15 | | -from dstack._internal.core.models.runs import JobSpec, JobStatus, ProbeSpec |
| 15 | +from dstack._internal.core.models.runs import JobStatus, ProbeSpec |
16 | 16 | from dstack._internal.core.services.ssh.tunnel import ( |
17 | 17 | SSH_DEFAULT_OPTIONS, |
18 | 18 | IPSocket, |
|
21 | 21 | ) |
22 | 22 | from dstack._internal.server.db import get_db, get_session_ctx |
23 | 23 | from dstack._internal.server.models import InstanceModel, JobModel, ProbeModel |
| 24 | +from dstack._internal.server.services.jobs import get_job_spec |
24 | 25 | from dstack._internal.server.services.locking import get_locker |
25 | 26 | from dstack._internal.server.services.logging import fmt |
26 | 27 | from dstack._internal.server.services.ssh import container_ssh_tunnel |
@@ -71,7 +72,7 @@ async def process_probes(): |
71 | 72 | if probe.job.status != JobStatus.RUNNING: |
72 | 73 | probe.active = False |
73 | 74 | else: |
74 | | - job_spec: JobSpec = JobSpec.__response__.parse_raw(probe.job.job_spec_data) |
| 75 | + job_spec = get_job_spec(probe.job) |
75 | 76 | probe_spec = job_spec.probes[probe.probe_num] |
76 | 77 | if probe_spec.until_ready and probe.success_streak >= probe_spec.ready_after: |
77 | 78 | probe.active = False |
@@ -148,7 +149,7 @@ async def _get_service_replica_client(job: JobModel) -> AsyncGenerator[AsyncClie |
148 | 149 | **SSH_DEFAULT_OPTIONS, |
149 | 150 | "ConnectTimeout": str(int(SSH_CONNECT_TIMEOUT.total_seconds())), |
150 | 151 | } |
151 | | - job_spec: JobSpec = JobSpec.__response__.parse_raw(job.job_spec_data) |
| 152 | + job_spec = get_job_spec(job) |
152 | 153 | with TemporaryDirectory() as temp_dir: |
153 | 154 | app_socket_path = (Path(temp_dir) / "replica.sock").absolute() |
154 | 155 | async with container_ssh_tunnel( |
|
0 commit comments