Skip to content

Commit 6eb3195

Browse files
committed
Add partial backup reload options
1 parent 622970c commit 6eb3195

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

aiohasupervisor/backups.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
NewBackup,
1616
PartialBackupOptions,
1717
PartialRestoreOptions,
18+
ReloadOptions,
1819
)
1920

2021

@@ -35,9 +36,11 @@ async def set_options(self, options: BackupsOptions) -> None:
3536
"""Set options for backups."""
3637
await self._client.post("backups/options", json=options.to_dict())
3738

38-
async def reload(self) -> None:
39+
async def reload(self, options: ReloadOptions | None = None) -> None:
3940
"""Reload backups cache."""
40-
await self._client.post("backups/reload")
41+
await self._client.post(
42+
"backups/reload", json=options.to_dict() if options else None
43+
)
4144

4245
async def freeze(self, options: FreezeOptions | None = None) -> None:
4346
"""Start a freeze for external snapshot process."""

aiohasupervisor/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
NewBackup,
4141
PartialBackupOptions,
4242
PartialRestoreOptions,
43+
ReloadOptions,
4344
)
4445
from aiohasupervisor.models.discovery import (
4546
Discovery,
@@ -203,6 +204,7 @@
203204
"NewBackup",
204205
"PartialBackupOptions",
205206
"PartialRestoreOptions",
207+
"ReloadOptions",
206208
"Discovery",
207209
"DiscoveryConfig",
208210
"AccessPoint",

aiohasupervisor/models/backups.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class BackupBaseFields(ABC):
4848
type: BackupType
4949
size: float
5050
location: str | None
51+
locations: list[str | None]
5152
protected: bool
5253
compressed: bool
5354

@@ -167,3 +168,11 @@ class FullRestoreOptions(Request):
167168
@dataclass(frozen=True, slots=True)
168169
class PartialRestoreOptions(FullRestoreOptions, PartialBackupRestoreOptions):
169170
"""PartialRestoreOptions model."""
171+
172+
173+
@dataclass(frozen=True, slots=True)
174+
class ReloadOptions(Request):
175+
"""ReloadOptions model."""
176+
177+
location: str | None
178+
filename: str

tests/test_backups.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
FullBackupOptions,
1616
PartialBackupOptions,
1717
PartialRestoreOptions,
18+
ReloadOptions,
1819
)
1920

2021
from . import load_fixture
@@ -79,6 +80,22 @@ async def test_backups_reload(
7980
}
8081

8182

83+
async def test_backups_partial_reload(
84+
responses: aioresponses, supervisor_client: SupervisorClient
85+
) -> None:
86+
"""Test backups partial reload API."""
87+
responses.post(f"{SUPERVISOR_URL}/backups/reload", status=200)
88+
assert (
89+
await supervisor_client.backups.reload(
90+
ReloadOptions(location=None, filename="test.tar")
91+
)
92+
is None
93+
)
94+
assert responses.requests.keys() == {
95+
("POST", URL(f"{SUPERVISOR_URL}/backups/reload"))
96+
}
97+
98+
8299
@pytest.mark.parametrize("options", [None, FreezeOptions(timeout=1000)])
83100
async def test_backups_freeze(
84101
responses: aioresponses,

0 commit comments

Comments
 (0)