Move backup/* WS commands to the backup integration (#110651)
* Move backup/* WS commands to the backup integration * Call correct command * Use debug for logging * Remove assertion of hass.data for setup test * parametrize token fixture
This commit is contained in:
parent
52621f9609
commit
ec4e6c3a74
9 changed files with 467 additions and 158 deletions
|
@ -6,13 +6,18 @@ import voluptuous as vol
|
|||
from homeassistant.components import websocket_api
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
|
||||
from .const import DOMAIN
|
||||
from .const import DOMAIN, LOGGER
|
||||
from .manager import BackupManager
|
||||
|
||||
|
||||
@callback
|
||||
def async_register_websocket_handlers(hass: HomeAssistant) -> None:
|
||||
def async_register_websocket_handlers(hass: HomeAssistant, with_hassio: bool) -> None:
|
||||
"""Register websocket commands."""
|
||||
if with_hassio:
|
||||
websocket_api.async_register_command(hass, handle_backup_end)
|
||||
websocket_api.async_register_command(hass, handle_backup_start)
|
||||
return
|
||||
|
||||
websocket_api.async_register_command(hass, handle_info)
|
||||
websocket_api.async_register_command(hass, handle_create)
|
||||
websocket_api.async_register_command(hass, handle_remove)
|
||||
|
@ -69,3 +74,47 @@ async def handle_create(
|
|||
manager: BackupManager = hass.data[DOMAIN]
|
||||
backup = await manager.generate_backup()
|
||||
connection.send_result(msg["id"], backup)
|
||||
|
||||
|
||||
@websocket_api.ws_require_user(only_supervisor=True)
|
||||
@websocket_api.websocket_command({vol.Required("type"): "backup/start"})
|
||||
@websocket_api.async_response
|
||||
async def handle_backup_start(
|
||||
hass: HomeAssistant,
|
||||
connection: websocket_api.ActiveConnection,
|
||||
msg: dict[str, Any],
|
||||
) -> None:
|
||||
"""Backup start notification."""
|
||||
manager: BackupManager = hass.data[DOMAIN]
|
||||
manager.backing_up = True
|
||||
LOGGER.debug("Backup start notification")
|
||||
|
||||
try:
|
||||
await manager.pre_backup_actions()
|
||||
except Exception as err: # pylint: disable=broad-except
|
||||
connection.send_error(msg["id"], "pre_backup_actions_failed", str(err))
|
||||
return
|
||||
|
||||
connection.send_result(msg["id"])
|
||||
|
||||
|
||||
@websocket_api.ws_require_user(only_supervisor=True)
|
||||
@websocket_api.websocket_command({vol.Required("type"): "backup/end"})
|
||||
@websocket_api.async_response
|
||||
async def handle_backup_end(
|
||||
hass: HomeAssistant,
|
||||
connection: websocket_api.ActiveConnection,
|
||||
msg: dict[str, Any],
|
||||
) -> None:
|
||||
"""Backup end notification."""
|
||||
manager: BackupManager = hass.data[DOMAIN]
|
||||
manager.backing_up = False
|
||||
LOGGER.debug("Backup end notification")
|
||||
|
||||
try:
|
||||
await manager.post_backup_actions()
|
||||
except Exception as err: # pylint: disable=broad-except
|
||||
connection.send_error(msg["id"], "post_backup_actions_failed", str(err))
|
||||
return
|
||||
|
||||
connection.send_result(msg["id"])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue