mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Allow backup writer to update progress during restore (#135975)
* Allow backup writer to update progress during restore * Clarify comment
This commit is contained in:
@@ -147,6 +147,7 @@ class RestoreBackupState(StrEnum):
|
||||
"""Receive backup state enum."""
|
||||
|
||||
COMPLETED = "completed"
|
||||
CORE_RESTART = "core_restart"
|
||||
FAILED = "failed"
|
||||
IN_PROGRESS = "in_progress"
|
||||
|
||||
@@ -217,7 +218,7 @@ class BackupReaderWriter(abc.ABC):
|
||||
include_database: bool,
|
||||
include_folders: list[Folder] | None,
|
||||
include_homeassistant: bool,
|
||||
on_progress: Callable[[ManagerStateEvent], None],
|
||||
on_progress: Callable[[CreateBackupEvent], None],
|
||||
password: str | None,
|
||||
) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]:
|
||||
"""Create a backup."""
|
||||
@@ -238,6 +239,7 @@ class BackupReaderWriter(abc.ABC):
|
||||
backup_id: str,
|
||||
*,
|
||||
agent_id: str,
|
||||
on_progress: Callable[[RestoreBackupEvent], None],
|
||||
open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]],
|
||||
password: str | None,
|
||||
restore_addons: list[str] | None,
|
||||
@@ -941,6 +943,7 @@ class BackupManager:
|
||||
backup_id=backup_id,
|
||||
open_stream=open_backup,
|
||||
agent_id=agent_id,
|
||||
on_progress=self.async_on_backup_event,
|
||||
password=password,
|
||||
restore_addons=restore_addons,
|
||||
restore_database=restore_database,
|
||||
@@ -1130,7 +1133,7 @@ class CoreBackupReaderWriter(BackupReaderWriter):
|
||||
include_database: bool,
|
||||
include_folders: list[Folder] | None,
|
||||
include_homeassistant: bool,
|
||||
on_progress: Callable[[ManagerStateEvent], None],
|
||||
on_progress: Callable[[CreateBackupEvent], None],
|
||||
password: str | None,
|
||||
) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]:
|
||||
"""Initiate generating a backup."""
|
||||
@@ -1170,7 +1173,7 @@ class CoreBackupReaderWriter(BackupReaderWriter):
|
||||
date_str: str,
|
||||
extra_metadata: dict[str, bool | str],
|
||||
include_database: bool,
|
||||
on_progress: Callable[[ManagerStateEvent], None],
|
||||
on_progress: Callable[[CreateBackupEvent], None],
|
||||
password: str | None,
|
||||
) -> WrittenBackup:
|
||||
"""Generate a backup."""
|
||||
@@ -1378,6 +1381,7 @@ class CoreBackupReaderWriter(BackupReaderWriter):
|
||||
open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]],
|
||||
*,
|
||||
agent_id: str,
|
||||
on_progress: Callable[[RestoreBackupEvent], None],
|
||||
password: str | None,
|
||||
restore_addons: list[str] | None,
|
||||
restore_database: bool,
|
||||
@@ -1440,6 +1444,9 @@ class CoreBackupReaderWriter(BackupReaderWriter):
|
||||
)
|
||||
|
||||
await self._hass.async_add_executor_job(_write_restore_file)
|
||||
on_progress(
|
||||
RestoreBackupEvent(stage=None, state=RestoreBackupState.CORE_RESTART)
|
||||
)
|
||||
await self._hass.services.async_call("homeassistant", "restart", blocking=True)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user