Delete initialization job before undeploying
To reduce potential conflicts between the cleanup job and the initialization job.
This commit is contained in:
parent
62bdcb6cd6
commit
5a4f2ad83a
2 changed files with 12 additions and 7 deletions
|
|
@ -79,7 +79,7 @@ class DeploymentMode(str, Enum):
|
||||||
|
|
||||||
class DeploymentVars(BaseModel):
|
class DeploymentVars(BaseModel):
|
||||||
namespace: str
|
namespace: str
|
||||||
mode: str
|
mode: DeploymentMode
|
||||||
build_name: str
|
build_name: str
|
||||||
repo: str
|
repo: str
|
||||||
target_branch: str
|
target_branch: str
|
||||||
|
|
@ -178,7 +178,7 @@ async def delete_resources(build_name: str) -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def delete_job(build_name: str, job_kind: str) -> None:
|
async def delete_job(build_name: str, job_kind: DeploymentMode) -> None:
|
||||||
await _kubectl(
|
await _kubectl(
|
||||||
[
|
[
|
||||||
"-n",
|
"-n",
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,7 @@ class Build(BaseModel):
|
||||||
return
|
return
|
||||||
elif self.status == BuildStatus.failed:
|
elif self.status == BuildStatus.failed:
|
||||||
_logger.info(f"Marking failed {self} for reinitialization.")
|
_logger.info(f"Marking failed {self} for reinitialization.")
|
||||||
await k8s.delete_job(self.name, job_kind="initialize")
|
await k8s.delete_job(self.name, job_kind=k8s.DeploymentMode.initialize)
|
||||||
await self._patch(init_status=BuildInitStatus.todo, desired_replicas=0)
|
await self._patch(init_status=BuildInitStatus.todo, desired_replicas=0)
|
||||||
elif self.status == BuildStatus.stopped:
|
elif self.status == BuildStatus.stopped:
|
||||||
_logger.info(f"Starting {self} that was last scaled on {self.last_scaled}.")
|
_logger.info(f"Starting {self} that was last scaled on {self.last_scaled}.")
|
||||||
|
|
@ -170,8 +170,9 @@ class Build(BaseModel):
|
||||||
_logger.info(f"Ignoring stop command for {self} that is not started.")
|
_logger.info(f"Ignoring stop command for {self} that is not started.")
|
||||||
|
|
||||||
async def initialize(self) -> None:
|
async def initialize(self) -> None:
|
||||||
# Start initizalization job. on_init_started/on_init_succeeded/on_init_failed
|
"""Initialize a build."""
|
||||||
# will be callsed back when it starts/succeeds/fails.
|
# Start initizalization job. on_initialize_{started,succeeded,failed} callbacks
|
||||||
|
# will follow from job events.
|
||||||
_logger.info(f"Deploying initialize job for {self}.")
|
_logger.info(f"Deploying initialize job for {self}.")
|
||||||
deployment_vars = k8s.make_deployment_vars(
|
deployment_vars = k8s.make_deployment_vars(
|
||||||
k8s.DeploymentMode.initialize,
|
k8s.DeploymentMode.initialize,
|
||||||
|
|
@ -187,8 +188,12 @@ class Build(BaseModel):
|
||||||
|
|
||||||
async def undeploy(self) -> None:
|
async def undeploy(self) -> None:
|
||||||
"""Undeploy a build."""
|
"""Undeploy a build."""
|
||||||
await self.stop()
|
# Delete the initialization job to reduce conflict with the cleanup job.
|
||||||
# Start cleanup job. on_cleanup_XXX callbacks will follow.
|
await k8s.delete_job(self.name, job_kind=k8s.DeploymentMode.initialize)
|
||||||
|
# Be sure it is stopped.
|
||||||
|
await self._patch(desired_replicas=0)
|
||||||
|
# Start cleanup job. on_cleanup_{started,succeeded,failed} callbacks will follow
|
||||||
|
# from job events.
|
||||||
_logger.info(f"Deploying cleanup job for {self}.")
|
_logger.info(f"Deploying cleanup job for {self}.")
|
||||||
deployment_vars = k8s.make_deployment_vars(
|
deployment_vars = k8s.make_deployment_vars(
|
||||||
k8s.DeploymentMode.cleanup,
|
k8s.DeploymentMode.cleanup,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue