feat(homeassistant): a scheduled OS update reboots the machine and is done once the new version runs (#6755)
Home Assistant writes an OS update and leaves the reboot to someone, so a scheduled one never finished unattended. The schedule now asks for the reboot once, follows it through Home Assistant going away, and counts it done when the Supervisor reports a different version with nothing pending. A machine that doesn't come back or falls back to the old version fails after 20 minutes, which ends the slot and raises update_failed. Install on the page and through MCP still leave the reboot to the person. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
"""Home Assistant: an update the schedule installs can reboot the machine and follow it
|
||||
|
||||
Revision ID: homeassistant_004_reboot
|
||||
Revises: homeassistant_003_health
|
||||
Create Date: 2026-11-02
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
revision: str = "homeassistant_004_reboot"
|
||||
down_revision: Union[str, None] = "homeassistant_003_health"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def _under_way(states: str) -> None:
|
||||
op.execute("DROP INDEX uq_homeassistant_update_under_way")
|
||||
op.execute("CREATE UNIQUE INDEX uq_homeassistant_update_under_way ON homeassistant_updates ((true)) "
|
||||
f"WHERE state IN ({states})")
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.add_column("homeassistant_updates",
|
||||
sa.Column("reboot_after", sa.Boolean, nullable=False, server_default=sa.false()))
|
||||
op.add_column("homeassistant_updates", sa.Column("reboot_sent_at", sa.DateTime(timezone=True), nullable=True))
|
||||
_under_way("'backing_up', 'installing', 'rebooting'")
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
_under_way("'backing_up', 'installing'")
|
||||
op.drop_column("homeassistant_updates", "reboot_sent_at")
|
||||
op.drop_column("homeassistant_updates", "reboot_after")
|
||||
Reference in New Issue
Block a user