INNER CODE UNIT · Python
deadline
theonedev/onedev · server-product/helm/files/stop-servers.py:58
deadline = time.monotonic() + timeout
deleting = set()
while True:
existing = pods()
current = api("GET", base)
if current["spec"]["replicas"] != 0:
raise RuntimeError("StatefulSet was scaled up during upgrade; refusing to proceed")
if (not existing and current.get("status", {}).get("observedGeneration", 0)
>= current["metadata"]["generation"]):
print("All OneDev pods have stopped; Helm can now apply the new image", flush=True)
return
# Older StatefulSet controllers can wait for an unready pod during scale-down.
# Delete only this StatefulSet's pods, respecting their normal grace period.
for pod in existing:
metadata = pod["metadata"]
if metadata["uid"] not in deleting and not metadata.get("deletionTimestamp"):
try:
api("DELETE", pods_path + "/" + metadata["name"],