Skip to content

Commit b8e9cf9

Browse files
committed
Use run_name for service url
1 parent 8e6d2e7 commit b8e9cf9

2 files changed

Lines changed: 21 additions & 19 deletions

File tree

src/dstack/_internal/server/services/gateways.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,12 @@ async def generate_gateway_name(session: AsyncSession, project: ProjectModel) ->
210210
return name
211211

212212

213-
async def register_service_jobs(session: AsyncSession, project: ProjectModel, jobs: List[Job]):
214-
# we are expecting that all jobs are for the same service and the same gateway
215-
gateway_name = jobs[0].job_spec.gateway.gateway_name
213+
async def register_service_jobs(
214+
session: AsyncSession, project: ProjectModel, run_name: str, jobs: List[Job]
215+
):
216+
# we publish only one job
217+
job = jobs[0]
218+
gateway_name = job.job_spec.gateway.gateway_name
216219
if gateway_name is None:
217220
gateway = await get_project_default_gateway(session=session, project=project)
218221
if gateway is None:
@@ -223,26 +226,25 @@ async def register_service_jobs(session: AsyncSession, project: ProjectModel, jo
223226
raise ResourceNotExistsError("Gateway does not exist")
224227

225228
domain = gateway.wildcard_domain.lstrip("*.") if gateway.wildcard_domain else None
226-
private_bytes, public_bytes = generate_rsa_key_pair_bytes(
227-
comment=f"{project}/{jobs[0].job_spec.job_name}"
228-
)
229-
for i, job in enumerate(jobs):
230-
job.job_spec.gateway.gateway_name = gateway.name
231-
job.job_spec.gateway.ssh_key = private_bytes.decode()
232-
if domain is not None:
233-
job.job_spec.gateway.secure = True
234-
job.job_spec.gateway.public_port = 443
235-
job.job_spec.gateway.hostname = f"{job.job_spec.job_name}.{domain}"
236-
else:
237-
job.job_spec.gateway.secure = False
238-
# use provided public port
239-
job.job_spec.gateway.hostname = gateway.ip_address
229+
private_bytes, public_bytes = generate_rsa_key_pair_bytes(comment=f"{project}/{run_name}")
230+
231+
job.job_spec.gateway.gateway_name = gateway.name
232+
job.job_spec.gateway.ssh_key = private_bytes.decode()
233+
if domain is not None:
234+
job.job_spec.gateway.secure = True
235+
job.job_spec.gateway.public_port = 443
236+
job.job_spec.gateway.hostname = f"{run_name}.{domain}"
237+
else:
238+
job.job_spec.gateway.secure = False
239+
# use provided public port
240+
job.job_spec.gateway.hostname = gateway.ip_address
241+
240242
await run_async(
241243
configure_gateway_over_ssh,
242244
f"ubuntu@{gateway.ip_address}",
243245
project.ssh_private_key,
244246
public_bytes.decode(),
245-
jobs,
247+
[job],
246248
)
247249

248250

src/dstack/_internal/server/services/runs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ async def submit_run(
165165
session.add(run_model)
166166
jobs = get_jobs_from_run_spec(run_spec)
167167
if run_spec.configuration.type == "service":
168-
await gateways.register_service_jobs(session, project, jobs)
168+
await gateways.register_service_jobs(session, project, run_spec.run_name, jobs)
169169
for job in jobs:
170170
job_model = create_job_model_for_new_submission(
171171
run_model=run_model,

0 commit comments

Comments
 (0)