* Rename sync agent module to agent * Rename BackupSyncAgent to BackupAgent * Fix test typo * Rename async_get_backup_sync_agents to async_get_backup_agents * Rename and clean up remaining sync things * Update kitchen sink * Apply suggestions from code review * Update test_manager.py --------- Co-authored-by: Erik Montnemery <erik@montnemery.com>
74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
"""Backup platform for the kitchen_sink integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from pathlib import Path
|
|
from typing import Any
|
|
from uuid import uuid4
|
|
|
|
from homeassistant.components.backup import (
|
|
BackupAgent,
|
|
BackupUploadMetadata,
|
|
UploadedBackup,
|
|
)
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
async def async_get_backup_sync_agents(
|
|
hass: HomeAssistant,
|
|
) -> list[BackupAgent]:
|
|
"""Register the backup agents."""
|
|
return [KitchenSinkBackupAgent("syncer")]
|
|
|
|
|
|
class KitchenSinkBackupAgent(BackupAgent):
|
|
"""Kitchen sink backup agent."""
|
|
|
|
def __init__(self, name: str) -> None:
|
|
"""Initialize the kitchen sink backup sync agent."""
|
|
super().__init__(name)
|
|
self._uploads = [
|
|
UploadedBackup(
|
|
id="def456",
|
|
name="Kitchen sink syncer",
|
|
slug="abc123",
|
|
size=1234,
|
|
date="1970-01-01T00:00:00Z",
|
|
)
|
|
]
|
|
|
|
async def async_download_backup(
|
|
self,
|
|
*,
|
|
id: str,
|
|
path: Path,
|
|
**kwargs: Any,
|
|
) -> None:
|
|
"""Download a backup file."""
|
|
LOGGER.info("Downloading backup %s to %s", id, path)
|
|
|
|
async def async_upload_backup(
|
|
self,
|
|
*,
|
|
path: Path,
|
|
metadata: BackupUploadMetadata,
|
|
**kwargs: Any,
|
|
) -> None:
|
|
"""Upload a backup."""
|
|
LOGGER.info("Uploading backup %s %s", path.name, metadata)
|
|
self._uploads.append(
|
|
UploadedBackup(
|
|
id=uuid4().hex,
|
|
name=metadata.name,
|
|
slug=metadata.slug,
|
|
size=metadata.size,
|
|
date=metadata.date,
|
|
)
|
|
)
|
|
|
|
async def async_list_backups(self, **kwargs: Any) -> list[UploadedBackup]:
|
|
"""List synced backups."""
|
|
return self._uploads
|