MCPcopy Index your code
hub / github.com/hunvreus/devpush / finalize_deployment

Function finalize_deployment

app/workers/tasks/deployment.py:383–450  ·  view source on GitHub ↗

Finalizes a deployment, setting up aliases and updating Traefik config.

(ctx, deployment_id: str)

Source from the content-addressed store, hash-verified

381
382
383async def finalize_deployment(ctx, deployment_id: str):
384 """Finalizes a deployment, setting up aliases and updating Traefik config."""
385 settings = get_settings()
386 redis_client = get_redis_client()
387 service = DeploymentService()
388 log_prefix = f"[DeployFinalize:{deployment_id}]"
389 logger.info(f"{log_prefix} Finalizing deployment")
390
391 queue: ArqRedis | None = ctx.get("redis") if isinstance(ctx, dict) else None
392
393 async with AsyncSessionLocal() as db:
394 deployment = None
395 try:
396 deployment = (
397 await db.execute(
398 select(Deployment)
399 .options(joinedload(Deployment.project))
400 .where(Deployment.id == deployment_id)
401 )
402 ).scalar_one()
403
404 if deployment.conclusion == "canceled":
405 logger.info(
406 "%s Deployment already canceled; skipping finalize.", log_prefix
407 )
408 return
409
410 await DeploymentService().setup_aliases(deployment, db, settings)
411 await db.commit()
412
413 # Update Traefik dynamic config
414 try:
415 await DeploymentService().update_traefik_config(
416 deployment.project,
417 db,
418 settings,
419 include_deployment_ids={deployment.id},
420 )
421 except Exception as e:
422 logger.error(f"{log_prefix} Failed to update Traefik config: {e}")
423
424 await service.update_status(
425 db,
426 deployment,
427 status="completed",
428 conclusion="succeeded",
429 error=None,
430 redis_client=redis_client,
431 )
432
433 # Cleanup inactive deployments
434 queue: ArqRedis = ctx["redis"]
435 await queue.enqueue_job(
436 "cleanup_inactive_containers", deployment.project_id
437 )
438 logger.info(
439 f"{log_prefix} Inactive deployments cleanup job queued for project {deployment.project_id}."
440 )

Callers

nothing calls this directly

Calls 6

update_statusMethod · 0.95
get_settingsFunction · 0.90
get_redis_clientFunction · 0.90
DeploymentServiceClass · 0.90
setup_aliasesMethod · 0.80
update_traefik_configMethod · 0.80

Tested by

no test coverage detected