watchdog: one-shot /upgrade-all trigger on phase-sequence completion
When LOG_DIR/.run-upgrade-on-complete exists, the watchdog launches launch-upgrader.py start the moment the last phase reaches ## DONE (then consumes the flag). Lets the operator replace a scheduled weekly cron run with 'run as soon as the current phase queue finishes' — used tonight: the cc-ci-upgrade-all.timer was stopped (stamp forwarded past tonight's slot) and this flag set instead.
This commit is contained in:
@ -770,6 +770,18 @@ def watchdog_loop():
|
|||||||
Path(LOG_DIR, "SEQUENCE-COMPLETE").write_text(
|
Path(LOG_DIR, "SEQUENCE-COMPLETE").write_text(
|
||||||
f"cc-ci phase sequence complete {ts}. Phases: {all_ids()}. "
|
f"cc-ci phase sequence complete {ts}. Phases: {all_ids()}. "
|
||||||
f"Loops stopped; entire build finished.\n")
|
f"Loops stopped; entire build finished.\n")
|
||||||
|
# One-shot: if the operator queued an upgrade to follow the phase run
|
||||||
|
# (touch LOG_DIR/.run-upgrade-on-complete), launch /upgrade-all now in
|
||||||
|
# place of the weekly cron. Flag is consumed so it never repeats.
|
||||||
|
trigger = Path(LOG_DIR) / ".run-upgrade-on-complete"
|
||||||
|
if trigger.exists():
|
||||||
|
trigger.unlink()
|
||||||
|
log("upgrade-on-complete flag set — launching /upgrade-all")
|
||||||
|
subprocess.run(
|
||||||
|
["python3", f"{PLAN_DIR}/launch-upgrader.py", "start"],
|
||||||
|
env={**os.environ,
|
||||||
|
"PATH": "/home/loops/.local/bin:" + os.environ.get("PATH", "")},
|
||||||
|
capture_output=True)
|
||||||
log("watchdog exiting.")
|
log("watchdog exiting.")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user