mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
Tag backups created when updating addon with supervisor.addon_update (#136690)
This commit is contained in:
parent
be7a7c94f6
commit
b1abf50a31
@ -672,6 +672,7 @@ class BackupManager:
|
||||
self,
|
||||
*,
|
||||
agent_ids: list[str],
|
||||
extra_metadata: dict[str, bool | str] | None = None,
|
||||
include_addons: list[str] | None,
|
||||
include_all_addons: bool,
|
||||
include_database: bool,
|
||||
@ -684,6 +685,7 @@ class BackupManager:
|
||||
"""Create a backup."""
|
||||
new_backup = await self.async_initiate_backup(
|
||||
agent_ids=agent_ids,
|
||||
extra_metadata=extra_metadata,
|
||||
include_addons=include_addons,
|
||||
include_all_addons=include_all_addons,
|
||||
include_database=include_database,
|
||||
@ -717,6 +719,7 @@ class BackupManager:
|
||||
self,
|
||||
*,
|
||||
agent_ids: list[str],
|
||||
extra_metadata: dict[str, bool | str] | None = None,
|
||||
include_addons: list[str] | None,
|
||||
include_all_addons: bool,
|
||||
include_database: bool,
|
||||
@ -741,6 +744,7 @@ class BackupManager:
|
||||
try:
|
||||
return await self._async_create_backup(
|
||||
agent_ids=agent_ids,
|
||||
extra_metadata=extra_metadata,
|
||||
include_addons=include_addons,
|
||||
include_all_addons=include_all_addons,
|
||||
include_database=include_database,
|
||||
@ -764,6 +768,7 @@ class BackupManager:
|
||||
self,
|
||||
*,
|
||||
agent_ids: list[str],
|
||||
extra_metadata: dict[str, bool | str] | None,
|
||||
include_addons: list[str] | None,
|
||||
include_all_addons: bool,
|
||||
include_database: bool,
|
||||
@ -790,6 +795,7 @@ class BackupManager:
|
||||
name
|
||||
or f"{'Automatic' if with_automatic_settings else 'Custom'} backup {HAVERSION}"
|
||||
)
|
||||
extra_metadata = extra_metadata or {}
|
||||
|
||||
try:
|
||||
(
|
||||
@ -798,7 +804,8 @@ class BackupManager:
|
||||
) = await self._reader_writer.async_create_backup(
|
||||
agent_ids=agent_ids,
|
||||
backup_name=backup_name,
|
||||
extra_metadata={
|
||||
extra_metadata=extra_metadata
|
||||
| {
|
||||
"instance_id": await instance_id.async_get(self.hass),
|
||||
"with_automatic_settings": with_automatic_settings,
|
||||
},
|
||||
|
@ -509,6 +509,7 @@ async def backup_addon_before_update(
|
||||
try:
|
||||
await backup_manager.async_create_backup(
|
||||
agent_ids=[await _default_agent(client)],
|
||||
extra_metadata={"supervisor.addon_update": addon},
|
||||
include_addons=[addon],
|
||||
include_all_addons=False,
|
||||
include_database=False,
|
||||
|
@ -90,13 +90,13 @@ def generate_backup_id_fixture() -> Generator[MagicMock]:
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("mock_backup_generation")
|
||||
async def test_async_create_backup(
|
||||
async def test_create_backup_service(
|
||||
hass: HomeAssistant,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
mocked_json_bytes: Mock,
|
||||
mocked_tarfile: Mock,
|
||||
) -> None:
|
||||
"""Test create backup."""
|
||||
"""Test create backup service."""
|
||||
assert await async_setup_component(hass, DOMAIN, {})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
@ -137,6 +137,128 @@ async def test_async_create_backup(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("mock_backup_generation")
|
||||
@pytest.mark.parametrize(
|
||||
("manager_kwargs", "expected_writer_kwargs"),
|
||||
[
|
||||
(
|
||||
{
|
||||
"agent_ids": ["backup.local"],
|
||||
"include_addons": None,
|
||||
"include_all_addons": False,
|
||||
"include_database": True,
|
||||
"include_folders": None,
|
||||
"include_homeassistant": True,
|
||||
"name": None,
|
||||
"password": None,
|
||||
},
|
||||
{
|
||||
"agent_ids": ["backup.local"],
|
||||
"backup_name": "Custom backup 2025.1.0",
|
||||
"extra_metadata": {
|
||||
"instance_id": ANY,
|
||||
"with_automatic_settings": False,
|
||||
},
|
||||
"include_addons": None,
|
||||
"include_all_addons": False,
|
||||
"include_database": True,
|
||||
"include_folders": None,
|
||||
"include_homeassistant": True,
|
||||
"on_progress": ANY,
|
||||
"password": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
"agent_ids": ["backup.local"],
|
||||
"include_addons": None,
|
||||
"include_all_addons": False,
|
||||
"include_database": True,
|
||||
"include_folders": None,
|
||||
"include_homeassistant": True,
|
||||
"name": None,
|
||||
"password": None,
|
||||
"with_automatic_settings": True,
|
||||
},
|
||||
{
|
||||
"agent_ids": ["backup.local"],
|
||||
"backup_name": "Automatic backup 2025.1.0",
|
||||
"extra_metadata": {
|
||||
"instance_id": ANY,
|
||||
"with_automatic_settings": True,
|
||||
},
|
||||
"include_addons": None,
|
||||
"include_all_addons": False,
|
||||
"include_database": True,
|
||||
"include_folders": None,
|
||||
"include_homeassistant": True,
|
||||
"on_progress": ANY,
|
||||
"password": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
"agent_ids": ["backup.local"],
|
||||
"extra_metadata": {"custom": "data"},
|
||||
"include_addons": None,
|
||||
"include_all_addons": False,
|
||||
"include_database": True,
|
||||
"include_folders": None,
|
||||
"include_homeassistant": True,
|
||||
"name": None,
|
||||
"password": None,
|
||||
},
|
||||
{
|
||||
"agent_ids": ["backup.local"],
|
||||
"backup_name": "Custom backup 2025.1.0",
|
||||
"extra_metadata": {
|
||||
"custom": "data",
|
||||
"instance_id": ANY,
|
||||
"with_automatic_settings": False,
|
||||
},
|
||||
"include_addons": None,
|
||||
"include_all_addons": False,
|
||||
"include_database": True,
|
||||
"include_folders": None,
|
||||
"include_homeassistant": True,
|
||||
"on_progress": ANY,
|
||||
"password": None,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_async_create_backup(
|
||||
hass: HomeAssistant,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
mocked_json_bytes: Mock,
|
||||
mocked_tarfile: Mock,
|
||||
manager_kwargs: dict[str, Any],
|
||||
expected_writer_kwargs: dict[str, Any],
|
||||
) -> None:
|
||||
"""Test create backup."""
|
||||
assert await async_setup_component(hass, DOMAIN, {})
|
||||
await hass.async_block_till_done()
|
||||
manager = hass.data[DATA_MANAGER]
|
||||
|
||||
new_backup = NewBackup(backup_job_id="time-123")
|
||||
backup_task = AsyncMock(
|
||||
return_value=WrittenBackup(
|
||||
backup=TEST_BACKUP_ABC123,
|
||||
open_stream=AsyncMock(),
|
||||
release_stream=AsyncMock(),
|
||||
),
|
||||
)() # call it so that it can be awaited
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.backup.manager.CoreBackupReaderWriter.async_create_backup",
|
||||
return_value=(new_backup, backup_task),
|
||||
) as create_backup:
|
||||
await manager.async_create_backup(**manager_kwargs)
|
||||
|
||||
assert create_backup.called
|
||||
assert create_backup.call_args == call(**expected_writer_kwargs)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("mock_backup_generation")
|
||||
async def test_create_backup_when_busy(
|
||||
hass: HomeAssistant,
|
||||
|
@ -240,6 +240,7 @@ async def test_update_addon(hass: HomeAssistant, update_addon: AsyncMock) -> Non
|
||||
None,
|
||||
{
|
||||
"agent_ids": ["hassio.local"],
|
||||
"extra_metadata": {"supervisor.addon_update": "test"},
|
||||
"include_addons": ["test"],
|
||||
"include_all_addons": False,
|
||||
"include_database": False,
|
||||
@ -254,6 +255,7 @@ async def test_update_addon(hass: HomeAssistant, update_addon: AsyncMock) -> Non
|
||||
"my_nas",
|
||||
{
|
||||
"agent_ids": ["hassio.my_nas"],
|
||||
"extra_metadata": {"supervisor.addon_update": "test"},
|
||||
"include_addons": ["test"],
|
||||
"include_all_addons": False,
|
||||
"include_database": False,
|
||||
@ -281,6 +283,7 @@ async def test_update_addon(hass: HomeAssistant, update_addon: AsyncMock) -> Non
|
||||
None,
|
||||
{
|
||||
"agent_ids": ["hassio.local"],
|
||||
"extra_metadata": {"supervisor.addon_update": "test"},
|
||||
"include_addons": ["test"],
|
||||
"include_all_addons": False,
|
||||
"include_database": False,
|
||||
|
@ -360,6 +360,7 @@ async def test_update_addon(
|
||||
None,
|
||||
{
|
||||
"agent_ids": ["hassio.local"],
|
||||
"extra_metadata": {"supervisor.addon_update": "test"},
|
||||
"include_addons": ["test"],
|
||||
"include_all_addons": False,
|
||||
"include_database": False,
|
||||
@ -374,6 +375,7 @@ async def test_update_addon(
|
||||
"my_nas",
|
||||
{
|
||||
"agent_ids": ["hassio.my_nas"],
|
||||
"extra_metadata": {"supervisor.addon_update": "test"},
|
||||
"include_addons": ["test"],
|
||||
"include_all_addons": False,
|
||||
"include_database": False,
|
||||
@ -401,6 +403,7 @@ async def test_update_addon(
|
||||
None,
|
||||
{
|
||||
"agent_ids": ["hassio.local"],
|
||||
"extra_metadata": {"supervisor.addon_update": "test"},
|
||||
"include_addons": ["test"],
|
||||
"include_all_addons": False,
|
||||
"include_database": False,
|
||||
|
Loading…
x
Reference in New Issue
Block a user