34 lines
1008 B
Python
34 lines
1008 B
Python
"""`POST /hooks/deploy`: дождаться тишины в мастере и попросить Komodo передеплоить."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import os
|
|
from datetime import timedelta
|
|
from typing import TYPE_CHECKING
|
|
|
|
from beaver_agent.hands import KOMODO
|
|
|
|
if TYPE_CHECKING:
|
|
from beaver_gateway.jobs.scheduler import JobRun
|
|
|
|
_log = logging.getLogger(__name__)
|
|
|
|
STACK = os.environ.get("KOMODO_STACK", "beaver-agent")
|
|
|
|
|
|
async def deploy(run: JobRun) -> None:
|
|
master = await run.master()
|
|
if master is not None and await run.conversations.busy(master):
|
|
await run.retry_in(timedelta(seconds=60))
|
|
return
|
|
run.background(_deploy())
|
|
|
|
|
|
async def _deploy() -> None:
|
|
if KOMODO is None:
|
|
_log.warning("deploy hook: KOMODO_URL/KEY/SECRET are not set, nothing deployed")
|
|
return
|
|
receipt = await KOMODO.execute("DeployStack", {"stack": STACK, "services": []})
|
|
_log.info("deploy hook: komodo accepted %s", receipt.get("id"))
|