Fix backup strategy retention filter (#133060)

* Fix lint

* Update tests

* Fix backup strategy retention filter
pull/133070/head
Martin Hjelmare 2024-12-12 18:47:37 +01:00 committed by GitHub
parent e7a43cfe09
commit 39e4719a43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 275 additions and 41 deletions

View File

@ -423,7 +423,14 @@ async def _delete_filtered_backups(
get_agent_errors,
)
LOGGER.debug("Total backups: %s", backups)
# only delete backups that are created by the backup strategy
backups = {
backup_id: backup
for backup_id, backup in backups.items()
if backup.with_strategy_settings
}
LOGGER.debug("Total strategy backups: %s", backups)
filtered_backups = backup_filter(backups)

View File

@ -14,6 +14,7 @@ from homeassistant.components.backup.const import DATA_MANAGER, DOMAIN
from homeassistant.components.backup.manager import (
CreateBackupEvent,
CreateBackupState,
ManagerBackup,
NewBackup,
)
from homeassistant.core import HomeAssistant
@ -42,7 +43,7 @@ BACKUP_CALL = call(
on_progress=ANY,
)
DEFAULT_STORAGE_DATA = {
DEFAULT_STORAGE_DATA: dict[str, Any] = {
"backups": {},
"config": {
"create_backup": {
@ -1248,9 +1249,26 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1270,9 +1288,26 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1292,10 +1327,31 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-09T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-4": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-09T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-5": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1315,10 +1371,31 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-09T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-4": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-09T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-5": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1338,9 +1415,26 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{"test-agent": BackupAgentError("Boom!")},
{},
@ -1360,9 +1454,26 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{"test-agent": BackupAgentError("Boom!")},
@ -1382,10 +1493,31 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-09T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-4": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-09T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-5": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1405,7 +1537,16 @@ async def test_config_schedule_logic(
"schedule": "daily",
},
{
"backup-1": MagicMock(date="2024-11-12T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-12T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1518,8 +1659,21 @@ async def test_config_retention_copies_logic(
"schedule": "never",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1538,8 +1692,21 @@ async def test_config_retention_copies_logic(
"schedule": "never",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1558,9 +1725,26 @@ async def test_config_retention_copies_logic(
"schedule": "never",
},
{
"backup-1": MagicMock(date="2024-11-09T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-09T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},
@ -1579,8 +1763,21 @@ async def test_config_retention_copies_logic(
"schedule": "never",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{"test-agent": BackupAgentError("Boom!")},
{},
@ -1599,8 +1796,21 @@ async def test_config_retention_copies_logic(
"schedule": "never",
},
{
"backup-1": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{"test-agent": BackupAgentError("Boom!")},
@ -1619,9 +1829,26 @@ async def test_config_retention_copies_logic(
"schedule": "never",
},
{
"backup-1": MagicMock(date="2024-11-09T04:45:00+01:00"),
"backup-2": MagicMock(date="2024-11-10T04:45:00+01:00"),
"backup-3": MagicMock(date="2024-11-11T04:45:00+01:00"),
"backup-1": MagicMock(
date="2024-11-09T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-2": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-3": MagicMock(
date="2024-11-11T04:45:00+01:00",
with_strategy_settings=True,
spec=ManagerBackup,
),
"backup-4": MagicMock(
date="2024-11-10T04:45:00+01:00",
with_strategy_settings=False,
spec=ManagerBackup,
),
},
{},
{},