Make the store change backwards compatible
parent
ffac481493
commit
62d8f8b93b
|
@ -100,7 +100,10 @@ class BackupConfigData:
|
|||
days=retention["days"],
|
||||
),
|
||||
schedule=BackupSchedule(
|
||||
days=days, state=ScheduleState(data["schedule"]["state"]), time=time
|
||||
days=days,
|
||||
recurrence=ScheduleRecurrence(data["schedule"]["recurrence"]),
|
||||
state=ScheduleState(data["schedule"]["state"]),
|
||||
time=time,
|
||||
),
|
||||
)
|
||||
|
||||
|
@ -254,6 +257,7 @@ class StoredBackupSchedule(TypedDict):
|
|||
"""Represent the stored backup schedule configuration."""
|
||||
|
||||
days: list[Day]
|
||||
recurrence: ScheduleRecurrence
|
||||
state: ScheduleState
|
||||
time: str | None
|
||||
|
||||
|
@ -262,12 +266,13 @@ class ScheduleParametersDict(TypedDict, total=False):
|
|||
"""Represent parameters for backup schedule."""
|
||||
|
||||
days: list[Day]
|
||||
recurrence: ScheduleRecurrence
|
||||
state: ScheduleState
|
||||
time: dt.time | None
|
||||
|
||||
|
||||
class Day(StrEnum):
|
||||
"""Represent the day(s) in a custom schedule state."""
|
||||
"""Represent the day(s) in a custom schedule recurrence."""
|
||||
|
||||
MONDAY = "mon"
|
||||
TUESDAY = "tue"
|
||||
|
@ -278,12 +283,22 @@ class Day(StrEnum):
|
|||
SUNDAY = "sun"
|
||||
|
||||
|
||||
class ScheduleState(StrEnum):
|
||||
class ScheduleRecurrence(StrEnum):
|
||||
"""Represent the schedule recurrence."""
|
||||
|
||||
NEVER = "never"
|
||||
DAILY = "daily"
|
||||
CUSTOM_DAYS = "custom_days"
|
||||
|
||||
|
||||
class ScheduleState(StrEnum):
|
||||
"""Represent the schedule recurrence.
|
||||
|
||||
This is deprecated and can be remove in HA Core 2025.8.
|
||||
"""
|
||||
|
||||
NEVER = "never"
|
||||
DAILY = "daily"
|
||||
MONDAY = "mon"
|
||||
TUESDAY = "tue"
|
||||
WEDNESDAY = "wed"
|
||||
|
@ -298,6 +313,7 @@ class BackupSchedule:
|
|||
"""Represent the backup schedule."""
|
||||
|
||||
days: list[Day] = field(default_factory=list)
|
||||
recurrence: ScheduleRecurrence = ScheduleRecurrence.NEVER
|
||||
state: ScheduleState = ScheduleState.NEVER
|
||||
time: dt.time | None = None
|
||||
cron_event: CronSim | None = field(init=False, default=None)
|
||||
|
@ -310,21 +326,21 @@ class BackupSchedule:
|
|||
) -> None:
|
||||
"""Apply a new schedule.
|
||||
|
||||
There are only three possible state types: never, daily, or weekly.
|
||||
There are only three possible recurrence types: never, daily, or custom_days
|
||||
"""
|
||||
if self.state is ScheduleState.NEVER or (
|
||||
self.state is ScheduleState.CUSTOM_DAYS and not self.days
|
||||
if self.recurrence is ScheduleRecurrence.NEVER or (
|
||||
self.recurrence is ScheduleRecurrence.CUSTOM_DAYS and not self.days
|
||||
):
|
||||
self._unschedule_next(manager)
|
||||
return
|
||||
|
||||
time = self.time if self.time is not None else DEFAULT_BACKUP_TIME
|
||||
if self.state is ScheduleState.DAILY:
|
||||
if self.recurrence is ScheduleRecurrence.DAILY:
|
||||
self._schedule_next(
|
||||
CRON_PATTERN_DAILY.format(m=time.minute, h=time.hour),
|
||||
manager,
|
||||
)
|
||||
elif self.state is ScheduleState.CUSTOM_DAYS:
|
||||
else: # ScheduleRecurrence.CUSTOM_DAYS
|
||||
self._schedule_next(
|
||||
CRON_PATTERN_WEEKLY.format(
|
||||
m=time.minute,
|
||||
|
@ -333,13 +349,6 @@ class BackupSchedule:
|
|||
),
|
||||
manager,
|
||||
)
|
||||
else:
|
||||
self._schedule_next(
|
||||
CRON_PATTERN_WEEKLY.format(
|
||||
m=time.minute, h=time.hour, d=self.state.value
|
||||
),
|
||||
manager,
|
||||
)
|
||||
|
||||
@callback
|
||||
def _schedule_next(
|
||||
|
@ -405,6 +414,7 @@ class BackupSchedule:
|
|||
"""Convert backup schedule to a dict."""
|
||||
return StoredBackupSchedule(
|
||||
days=self.days,
|
||||
recurrence=self.recurrence,
|
||||
state=self.state,
|
||||
time=self.time.isoformat() if self.time else None,
|
||||
)
|
||||
|
|
|
@ -50,7 +50,12 @@ class _BackupStore(Store[StoredBackupData]):
|
|||
if old_minor_version < 2:
|
||||
# Version 1.2 adds configurable backup time and custom days
|
||||
data["config"]["schedule"]["time"] = None
|
||||
data["config"]["schedule"]["days"] = []
|
||||
if (state := data["config"]["schedule"]["state"]) in ("daily", "never"):
|
||||
data["config"]["schedule"]["days"] = []
|
||||
data["config"]["schedule"]["recurrence"] = state
|
||||
else:
|
||||
data["config"]["schedule"]["days"] = [state]
|
||||
data["config"]["schedule"]["recurrence"] = "custom_days"
|
||||
|
||||
if old_major_version > 1:
|
||||
raise NotImplementedError
|
||||
|
|
|
@ -8,7 +8,7 @@ from homeassistant.components import websocket_api
|
|||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
|
||||
from .config import Day, ScheduleState
|
||||
from .config import Day, ScheduleRecurrence
|
||||
from .const import DATA_MANAGER, LOGGER
|
||||
from .manager import (
|
||||
DecryptOnDowloadNotSupported,
|
||||
|
@ -320,13 +320,15 @@ async def handle_config_info(
|
|||
) -> None:
|
||||
"""Send the stored backup config."""
|
||||
manager = hass.data[DATA_MANAGER]
|
||||
config = manager.config.data.to_dict()
|
||||
del config["schedule"]["state"] # type: ignore[misc] # mypy doesn't like deleting from TypedDict
|
||||
connection.send_result(
|
||||
msg["id"],
|
||||
{
|
||||
"config": manager.config.data.to_dict()
|
||||
"config": config
|
||||
| {
|
||||
"next_automatic_backup": manager.config.data.schedule.next_automatic_backup
|
||||
},
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -361,7 +363,9 @@ async def handle_config_info(
|
|||
vol.Optional("days"): vol.Any(
|
||||
vol.All([vol.Coerce(Day)], vol.Unique()),
|
||||
),
|
||||
vol.Optional("state"): vol.All(str, vol.Coerce(ScheduleState)),
|
||||
vol.Optional("recurrence"): vol.All(
|
||||
str, vol.Coerce(ScheduleRecurrence)
|
||||
),
|
||||
vol.Optional("time"): vol.Any(cv.time, None),
|
||||
}
|
||||
),
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'recurrence': 'never',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
|
|
|
@ -252,7 +252,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -290,8 +290,15 @@
|
|||
}),
|
||||
'schedule': dict({
|
||||
'days': list([
|
||||
'mon',
|
||||
'tue',
|
||||
'wed',
|
||||
'thu',
|
||||
'fri',
|
||||
'sat',
|
||||
'sun',
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'custom_days',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -326,7 +333,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -361,7 +368,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -395,8 +402,9 @@
|
|||
}),
|
||||
'schedule': dict({
|
||||
'days': list([
|
||||
'mon',
|
||||
]),
|
||||
'state': 'mon',
|
||||
'recurrence': 'custom_days',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -423,7 +431,7 @@
|
|||
}),
|
||||
'last_attempted_automatic_backup': None,
|
||||
'last_completed_automatic_backup': None,
|
||||
'next_automatic_backup': '2024-11-16T04:55:00+01:00',
|
||||
'next_automatic_backup': None,
|
||||
'retention': dict({
|
||||
'copies': None,
|
||||
'days': None,
|
||||
|
@ -431,7 +439,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'sat',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -468,7 +476,7 @@
|
|||
'mon',
|
||||
'sun',
|
||||
]),
|
||||
'state': 'custom_days',
|
||||
'recurrence': 'custom_days',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -502,7 +510,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -537,7 +545,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -572,6 +580,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'recurrence': 'never',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
|
@ -607,7 +616,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -642,7 +651,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -677,7 +686,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -712,7 +722,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -747,7 +757,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -782,7 +792,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -817,7 +828,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -852,7 +863,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': '06:00:00',
|
||||
}),
|
||||
}),
|
||||
|
@ -887,7 +898,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': '06:00:00',
|
||||
}),
|
||||
}),
|
||||
|
@ -922,7 +934,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -956,8 +968,9 @@
|
|||
}),
|
||||
'schedule': dict({
|
||||
'days': list([
|
||||
'mon',
|
||||
]),
|
||||
'state': 'mon',
|
||||
'recurrence': 'custom_days',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -991,8 +1004,10 @@
|
|||
}),
|
||||
'schedule': dict({
|
||||
'days': list([
|
||||
'mon',
|
||||
]),
|
||||
'state': 'mon',
|
||||
'recurrence': 'custom_days',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1027,7 +1042,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1062,7 +1077,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1097,6 +1112,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'recurrence': 'never',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
|
@ -1132,7 +1148,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1169,7 +1185,7 @@
|
|||
'mon',
|
||||
'sun',
|
||||
]),
|
||||
'state': 'custom_days',
|
||||
'recurrence': 'custom_days',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1206,7 +1222,8 @@
|
|||
'mon',
|
||||
'sun',
|
||||
]),
|
||||
'state': 'custom_days',
|
||||
'recurrence': 'custom_days',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1241,7 +1258,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1280,7 +1297,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1319,7 +1336,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1354,7 +1372,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1389,7 +1407,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1424,7 +1442,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1459,7 +1478,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1494,7 +1513,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1529,7 +1548,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1564,7 +1584,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1599,7 +1619,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1634,7 +1654,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1669,7 +1690,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1704,7 +1725,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1739,7 +1760,8 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'daily',
|
||||
'recurrence': 'daily',
|
||||
'state': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1774,7 +1796,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1808,7 +1830,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1842,7 +1864,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1876,7 +1898,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1910,7 +1932,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1944,7 +1966,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -1978,7 +2000,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2012,7 +2034,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2046,7 +2068,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2080,7 +2102,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2114,7 +2136,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2148,7 +2170,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2182,7 +2204,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2216,7 +2238,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2250,7 +2272,7 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
@ -2284,7 +2306,75 @@
|
|||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'state': 'never',
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'success': True,
|
||||
'type': 'result',
|
||||
})
|
||||
# ---
|
||||
# name: test_config_update_errors[command8]
|
||||
dict({
|
||||
'id': 1,
|
||||
'result': dict({
|
||||
'config': dict({
|
||||
'create_backup': dict({
|
||||
'agent_ids': list([
|
||||
]),
|
||||
'include_addons': None,
|
||||
'include_all_addons': False,
|
||||
'include_database': True,
|
||||
'include_folders': None,
|
||||
'name': None,
|
||||
'password': None,
|
||||
}),
|
||||
'last_attempted_automatic_backup': None,
|
||||
'last_completed_automatic_backup': None,
|
||||
'next_automatic_backup': None,
|
||||
'retention': dict({
|
||||
'copies': None,
|
||||
'days': None,
|
||||
}),
|
||||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'success': True,
|
||||
'type': 'result',
|
||||
})
|
||||
# ---
|
||||
# name: test_config_update_errors[command8].1
|
||||
dict({
|
||||
'id': 3,
|
||||
'result': dict({
|
||||
'config': dict({
|
||||
'create_backup': dict({
|
||||
'agent_ids': list([
|
||||
]),
|
||||
'include_addons': None,
|
||||
'include_all_addons': False,
|
||||
'include_database': True,
|
||||
'include_folders': None,
|
||||
'name': None,
|
||||
'password': None,
|
||||
}),
|
||||
'last_attempted_automatic_backup': None,
|
||||
'last_completed_automatic_backup': None,
|
||||
'next_automatic_backup': None,
|
||||
'retention': dict({
|
||||
'copies': None,
|
||||
'days': None,
|
||||
}),
|
||||
'schedule': dict({
|
||||
'days': list([
|
||||
]),
|
||||
'recurrence': 'never',
|
||||
'time': None,
|
||||
}),
|
||||
}),
|
||||
|
|
|
@ -71,9 +71,10 @@ DEFAULT_STORAGE_DATA: dict[str, Any] = {
|
|||
"copies": None,
|
||||
"days": None,
|
||||
},
|
||||
"schedule": {"days": [], "state": "never", "time": None},
|
||||
"schedule": {"days": [], "recurrence": "never", "state": "never", "time": None},
|
||||
},
|
||||
}
|
||||
DAILY = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -924,7 +925,12 @@ async def test_agents_info(
|
|||
"retention": {"copies": 3, "days": 7},
|
||||
"last_attempted_automatic_backup": "2024-10-26T04:45:00+01:00",
|
||||
"last_completed_automatic_backup": "2024-10-26T04:45:00+01:00",
|
||||
"schedule": {"days": [], "state": "daily", "time": None},
|
||||
"schedule": {
|
||||
"days": DAILY,
|
||||
"recurrence": "custom_days",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
},
|
||||
"key": DOMAIN,
|
||||
|
@ -949,7 +955,12 @@ async def test_agents_info(
|
|||
"retention": {"copies": 3, "days": None},
|
||||
"last_attempted_automatic_backup": None,
|
||||
"last_completed_automatic_backup": None,
|
||||
"schedule": {"days": [], "state": "never", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "never",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
},
|
||||
"key": DOMAIN,
|
||||
|
@ -974,7 +985,12 @@ async def test_agents_info(
|
|||
"retention": {"copies": None, "days": 7},
|
||||
"last_attempted_automatic_backup": "2024-10-27T04:45:00+01:00",
|
||||
"last_completed_automatic_backup": "2024-10-26T04:45:00+01:00",
|
||||
"schedule": {"days": [], "state": "never", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "never",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
},
|
||||
"key": DOMAIN,
|
||||
|
@ -999,7 +1015,12 @@ async def test_agents_info(
|
|||
"retention": {"copies": None, "days": None},
|
||||
"last_attempted_automatic_backup": None,
|
||||
"last_completed_automatic_backup": None,
|
||||
"schedule": {"days": [], "state": "mon", "time": None},
|
||||
"schedule": {
|
||||
"days": ["mon"],
|
||||
"recurrence": "custom_days",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
},
|
||||
"key": DOMAIN,
|
||||
|
@ -1024,7 +1045,12 @@ async def test_agents_info(
|
|||
"retention": {"copies": None, "days": None},
|
||||
"last_attempted_automatic_backup": None,
|
||||
"last_completed_automatic_backup": None,
|
||||
"schedule": {"days": [], "state": "sat", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "never",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
},
|
||||
"key": DOMAIN,
|
||||
|
@ -1051,7 +1077,8 @@ async def test_agents_info(
|
|||
"last_completed_automatic_backup": None,
|
||||
"schedule": {
|
||||
"days": ["mon", "sun"],
|
||||
"state": "custom_days",
|
||||
"recurrence": "custom_days",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
|
@ -1098,22 +1125,22 @@ async def test_config_info(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"state": "daily", "time": "06:00"},
|
||||
"schedule": {"recurrence": "daily", "time": "06:00"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"state": "mon"},
|
||||
"schedule": {"days": ["mon"], "recurrence": "custom_days"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"days": ["mon", "sun"], "state": "custom_days"},
|
||||
"schedule": {"days": ["mon", "sun"], "recurrence": "custom_days"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
|
@ -1124,43 +1151,43 @@ async def test_config_info(
|
|||
"name": "test-name",
|
||||
"password": "test-password",
|
||||
},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": 3, "days": 7},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": 3, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 7},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": 3},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"days": 7},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
],
|
||||
)
|
||||
|
@ -1208,27 +1235,32 @@ async def test_config_update(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": "blah",
|
||||
"recurrence": "blah",
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"state": "someday"},
|
||||
"recurrence": "never",
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"time": "early"},
|
||||
"recurrence": {"state": "someday"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"days": "mon"},
|
||||
"recurrence": {"time": "early"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"schedule": {"days": ["fun"]},
|
||||
"recurrence": {"days": "mon"},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"recurrence": {"days": ["fun"]},
|
||||
},
|
||||
{
|
||||
"type": "backup/config/update",
|
||||
|
@ -1304,7 +1336,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1323,7 +1355,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "mon"},
|
||||
"schedule": {"days": ["mon"], "recurrence": "custom_days"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1342,7 +1374,11 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "mon", "time": "03:45"},
|
||||
"schedule": {
|
||||
"days": ["mon"],
|
||||
"recurrence": "custom_days",
|
||||
"time": "03:45",
|
||||
},
|
||||
}
|
||||
],
|
||||
"2024-11-11T03:45:00+01:00",
|
||||
|
@ -1361,7 +1397,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "daily", "time": "03:45"},
|
||||
"schedule": {"recurrence": "daily", "time": "03:45"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T03:45:00+01:00",
|
||||
|
@ -1380,7 +1416,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"days": ["wed", "fri"], "state": "custom_days"},
|
||||
"schedule": {"days": ["wed", "fri"], "recurrence": "custom_days"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1399,7 +1435,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1418,7 +1454,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"days": [], "state": "custom_days"},
|
||||
"schedule": {"days": [], "recurrence": "custom_days"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1437,7 +1473,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
}
|
||||
],
|
||||
"2024-10-26T04:45:00+01:00",
|
||||
|
@ -1456,7 +1492,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "mon"},
|
||||
"schedule": {"days": ["mon"], "recurrence": "custom_days"},
|
||||
}
|
||||
],
|
||||
"2024-10-26T04:45:00+01:00",
|
||||
|
@ -1475,7 +1511,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
"2024-10-26T04:45:00+01:00",
|
||||
|
@ -1494,7 +1530,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1513,7 +1549,7 @@ async def test_config_update_errors(
|
|||
{
|
||||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
}
|
||||
],
|
||||
"2024-11-11T04:45:00+01:00",
|
||||
|
@ -1565,7 +1601,12 @@ async def test_config_schedule_logic(
|
|||
"retention": {"copies": None, "days": None},
|
||||
"last_attempted_automatic_backup": last_completed_automatic_backup,
|
||||
"last_completed_automatic_backup": last_completed_automatic_backup,
|
||||
"schedule": {"days": [], "state": "daily", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "daily",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
}
|
||||
hass_storage[DOMAIN] = {
|
||||
|
@ -1635,7 +1676,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": None, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1674,7 +1715,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 3, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1713,7 +1754,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 3, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1742,7 +1783,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 3, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1786,7 +1827,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 2, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1830,7 +1871,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 2, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1869,7 +1910,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 2, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1908,7 +1949,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 0, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -1952,7 +1993,7 @@ async def test_config_schedule_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 0, "days": None},
|
||||
"schedule": {"state": "daily"},
|
||||
"schedule": {"recurrence": "daily"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -2016,7 +2057,12 @@ async def test_config_retention_copies_logic(
|
|||
"retention": {"copies": None, "days": None},
|
||||
"last_attempted_automatic_backup": None,
|
||||
"last_completed_automatic_backup": last_backup_time,
|
||||
"schedule": {"days": [], "state": "daily", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "daily",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
}
|
||||
hass_storage[DOMAIN] = {
|
||||
|
@ -2087,7 +2133,7 @@ async def test_config_retention_copies_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": None, "days": None},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -2123,7 +2169,7 @@ async def test_config_retention_copies_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 3, "days": None},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -2159,7 +2205,7 @@ async def test_config_retention_copies_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 3, "days": None},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -2200,7 +2246,7 @@ async def test_config_retention_copies_logic(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test.test-agent"]},
|
||||
"retention": {"copies": 2, "days": None},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
},
|
||||
{
|
||||
"backup-1": MagicMock(
|
||||
|
@ -2274,7 +2320,12 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"retention": {"copies": None, "days": None},
|
||||
"last_attempted_automatic_backup": None,
|
||||
"last_completed_automatic_backup": None,
|
||||
"schedule": {"days": [], "state": "daily", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "daily",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
}
|
||||
hass_storage[DOMAIN] = {
|
||||
|
@ -2402,7 +2453,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 2},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2438,7 +2489,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 2},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2474,7 +2525,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 3},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2510,7 +2561,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 2},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2551,7 +2602,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 2},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2587,7 +2638,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 2},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2623,7 +2674,7 @@ async def test_config_retention_copies_logic_manual_backup(
|
|||
"type": "backup/config/update",
|
||||
"create_backup": {"agent_ids": ["test-agent"]},
|
||||
"retention": {"copies": None, "days": 0},
|
||||
"schedule": {"state": "never"},
|
||||
"schedule": {"recurrence": "never"},
|
||||
}
|
||||
],
|
||||
{
|
||||
|
@ -2695,7 +2746,12 @@ async def test_config_retention_days_logic(
|
|||
"retention": {"copies": None, "days": stored_retained_days},
|
||||
"last_attempted_automatic_backup": None,
|
||||
"last_completed_automatic_backup": last_backup_time,
|
||||
"schedule": {"days": [], "state": "never", "time": None},
|
||||
"schedule": {
|
||||
"days": [],
|
||||
"recurrence": "never",
|
||||
"state": "never",
|
||||
"time": None,
|
||||
},
|
||||
},
|
||||
}
|
||||
hass_storage[DOMAIN] = {
|
||||
|
|
Loading…
Reference in New Issue