Commit Graph

93 Commits (0f7cb6b757ad8399261dbd2627cb4f968bab50a4)

Author SHA1 Message Date
Erik Montnemery 0d8c449ff4
Validate hassio backup settings (#138880)
* Validate hassio backup settings

* Add snapshots

* Don't reset addon and folder settings

* Adapt to changes in BackupConfig.update
2025-02-20 16:06:33 +01:00
Erik Montnemery ad7780291e
Correct backup date when reading a backup created by supervisor (#138860) 2025-02-19 22:40:03 +01:00
Erik Montnemery b70c5710a9
Correct invalid automatic backup settings when loading from store (#138716)
* Correct invalid automatic backup settings when loading from store

* Improve docstring

* Improve tests
2025-02-19 16:24:30 +01:00
Erik Montnemery 22c634e626
Don't allow setting backup retention to 0 days or copies (#138771)
* Don't allow setting backup retention to 0 days or copies

* Add tests
2025-02-18 15:16:44 +01:00
Erik Montnemery 6ef1178a35
Use setup_backup_integration test helper in backup tests (#138362) 2025-02-12 09:49:01 +01:00
Erik Montnemery a6c51440e5
Use test helper for creating a mocked backup agent in backup tests (#138312)
* Use test helper for creating a mocked backup agent in backup tests

* Adjust according to discussion
2025-02-12 08:55:16 +01:00
Erik Montnemery 8b3421deb7
Add test helper for creating a mocked backup agent (#138294)
* Add test helper for creating a mocked backup agent

* Address review comments
2025-02-11 16:21:24 +01:00
Erik Montnemery 10180cd464
Fix BackupManager.async_delete_backup (#138286) 2025-02-11 14:53:07 +01:00
Erik Montnemery e1817d466e
Keep one backup per backup agent when executing retention policy (#138189)
* Keep one backup per backup agent when executing retention policy

* Add tests

* Use defaultdict instead of dict.setdefault

* Update hassio tests
2025-02-10 18:09:57 +02:00
Abílio Costa c2bb376c43
Handle generic agent exceptions when getting and deleting backups (#138145)
* Handle generic agent exceptions when getting backups

* Update hassio test

* Update delete_backup
2025-02-10 01:31:55 +01:00
Erik Montnemery 2f116eab9e
Adjust logic for per-backup agent encryption (#137420) 2025-02-05 12:14:06 +01:00
Erik Montnemery 27b96160e2
Adjust backup filename scheme (#137424)
* Adjust backup filename scheme

* Update tests
2025-02-05 12:02:58 +01:00
Erik Montnemery bfbf95f515
Allow creating backup if at least one agent is available (#137409) 2025-02-05 10:14:39 +01:00
Erik Montnemery eb5036854f
Improve error handling when supervisor backups are deleted (#137331)
* Improve error handling when supervisor backups are deleted

* Move exception definitions
2025-02-04 19:49:55 +01:00
Erik Montnemery 5629b995ce
Include extra metadata in backup WS API (#137296)
* Include extra metadata in backup WS API

* Update onboarding backup view

* Update google_drive tests
2025-02-04 15:57:30 +01:00
Erik Montnemery ca53d97a6d
Improve shutdown of _CipherBackupStreamer (#137257)
* Improve shutdown of _CipherBackupStreamer

* Catch the right exception
2025-02-04 12:24:30 +01:00
Erik Montnemery e18dc063ba
Make backup file names more user friendly (#136928)
* Make backup file names more user friendly

* Strip backup name

* Strip backup name

* Underscores
2025-01-31 17:33:30 +01:00
Joost Lekkerkerker c3b0bc3e0d
Show name of the backup agents in issue (#136925)
* Show name of the backup agents in issue

* Show name of the backup agents in issue

* Update homeassistant/components/backup/manager.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-01-30 18:15:54 +01:00
Erik Montnemery bab616fa61
Fix handling of renamed backup files in the core writer (#136898)
* Fix handling of renamed backup files in the core writer

* Adjust mocking

* Raise BackupAgentError instead of KeyError in get_backup_path

* Add specific error indicating backup not found

* Fix tests

* Ensure backups are loaded

* Fix tests
2025-01-30 15:25:16 +01:00
Erik Montnemery aca9607e2f
Bump backup store to version 1.3 (#136870)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-01-29 14:58:06 -06:00
Erik Montnemery b2ec72d75f
Persist backup restore status after core restart (#136838)
* Persist backup restore status after core restart

* Don't blow up if restore result file can't be removed

* Update tests
2025-01-29 16:58:33 +01:00
Erik Montnemery 9a687e7f94
Add support for per-backup agent encryption flag (#136622)
* Add support for per-backup agent encryption flag

* Adjust

* Don't attempt decrypting an unprotected backup

* Address review comments

* Add some tests

* Add fixture

* Rename fixture

* Correct condition for when we should encrypt or decrypt

* Update tests in integrations

* Improve test coverage

* Fix onedrive tests

* Add test

* Improve cipher worker shutdown

* Improve test coverage

* Fix google_drive tests

* Move inner class _CipherBackupStreamer._WorkerStatus to module scope
2025-01-29 14:04:17 +01:00
Erik Montnemery 7249c02655
Add backup endpoints to the onboarding integration (#136051)
* Add backup endpoints to the onboarding integration

* Add backup as after dependency of onboarding

* Add test snapshots

* Fix stale docstrings

* Add utility function for getting the backup manager instance

* Return backup_id when uploading backup

* Change /api/onboarding/backup/restore to accept a JSON body

* Fix with_backup_manager
2025-01-29 12:32:18 +01:00
Erik Montnemery abb58ec785
Include error reason in backup events (#136697)
* Include error reason in backup events

* Update hassio backup tests

* Sort code

* Remove catching BackupError in async_receive_backup
2025-01-28 14:44:09 +01:00
Erik Montnemery b1abf50a31
Tag backups created when updating addon with supervisor.addon_update (#136690) 2025-01-28 13:48:28 +01:00
Michael 8300fd2de8
Introduce `unique_id` to BackupAgent (#136651)
* add unique_id to BackupAgent

* adjust tests
2025-01-28 12:06:03 +01:00
Martin Hjelmare 1a57992e78
Add restore backup tests (#136538)
* Test restore backup with busy manager

* Test restore backup with agent error

* Test restore backup with file error
2025-01-25 18:20:41 -06:00
Martin Hjelmare dabcc6d55a
Clean up remaining backup manager tests (#136335) 2025-01-23 15:23:44 +01:00
Erik Montnemery ea9be01c7c
Indicate in WS API when scheduling additional automatic backup (#136155) 2025-01-22 18:01:46 +00:00
Erik Montnemery a2cbaef264
Prepare backup store to read version 2 (#136149) 2025-01-21 14:37:44 +01:00
Erik Montnemery a60d2b69e3
Add service backup.create_automatic (#136152) 2025-01-21 12:40:54 +00:00
Erik Montnemery fb4df00e3c
Add support for custom weekly backup schedule (#136079)
* Add support for custom weekly backup schedule

* Rename the new flag to custom_days

* Make the store change backwards compatible

* Improve comments
2025-01-21 08:27:41 +01:00
Erik Montnemery 760168de83
Allow backup writer to update progress during restore (#135975)
* Allow backup writer to update progress during restore

* Clarify comment
2025-01-20 12:58:17 +01:00
Erik Montnemery 43da828a51
Make the time for automated backups configurable (#135825)
* Make the time for automated backups configurable

* Store time as a string, use None to indicate default time

* Don't add jitter if the time is set by user

* Include time of next automatic backup in response to backup/info

* Update tests

* Rename recurrence to state

* Include scheduled backup time in backup/config/info response

* Address review comments

* Update cloud test

* Add test for store migration

* Address review comments
2025-01-20 12:57:46 +01:00
Erik Montnemery 02347d5d36
Improve backup store in tests (#135974) 2025-01-19 11:13:37 +01:00
Erik Montnemery 1fee0a5aa2
Improve backup store in tests (#135798) 2025-01-16 23:14:19 +01:00
Erik Montnemery 6cbe18ebbd
Bump securetar to 2025.1.3 (#135762)
* Bump securetar to 2025.1.3

* Remove outdated fixture
2025-01-16 13:26:52 +01:00
Martin Hjelmare 421f9aa638
Avoid using the backup manager in restore tests (#135757)
* Fix typing

* Refactor test restore backup

* Refactor test restore backup wrong password

* Refactor test restore backup wrong parameters

* Update manager state after rebase

* Remove not needed patch
2025-01-16 12:49:27 +01:00
Erik Montnemery 9db6be11f7
Support decrypting backups when downloading (#135728)
* Support decrypting backups when downloading

* Close stream

* Use test helper

* Wait for worker to finish

* Simplify

* Update backup.json

* Simplify

* Revert change from the future
2025-01-16 12:36:12 +01:00
Martin Hjelmare 77a351f992
Add receive backup tests (#135680)
* Clean up test_receive_backup_busy_manager

* Test receive backup agent error

* Test file write error during backup receive

* Test read tar error during backup receive

* Test non agent upload error during backup receive

* Test file read error during backup receive
2025-01-16 08:41:59 +01:00
Erik Montnemery f36a10126c
Add WS command backup/can_decrypt_on_download (#135662)
* Add WS command backup/can_decrypt_on_download

* Wrap errors

* Add default messages to exceptions

* Improve test coverage
2025-01-15 19:40:29 +01:00
epenet 02956f9a83
Improve formatting in component test files (#135267)
Improve formatting in test files
2025-01-10 10:53:45 +01:00
Erik Montnemery 9901f3c3dd
Add jitter to backup start time to avoid thundering herd (#135065) 2025-01-09 10:53:33 +01:00
Erik Montnemery b78e39da2d
Fix activating backup retention config on startup (#134523) 2025-01-03 10:29:29 +01:00
Paulus Schoutsen 0ef254bc9a
Fix backup dir not existing (#134506) 2025-01-03 00:21:19 -05:00
Martin Hjelmare a329828bdf
Handle backup errors more consistently (#133522)
* Add backup manager and read writer errors

* Clean up not needed default argument

* Clean up todo comment

* Trap agent bugs during upload

* Always release stream

* Clean up leftover

* Update test for backup with automatic settings

* Fix use of vol.Any

* Refactor test helper

* Only update successful timestamp if completed event is sent

* Always delete surplus copies

* Fix after rebase

* Fix after rebase

* Revert "Fix use of vol.Any"

This reverts commit 28fd7a544899bb6ed05f771e9e608bc5b41d2b5e.

* Inherit BackupReaderWriterError in IncorrectPasswordError

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-01-02 15:45:46 +01:00
Erik Montnemery 0c3489c1b3
Adjust language in backup integration (#134440)
* Adjust language in backup integration

* Update tests
2025-01-02 13:29:46 +01:00
Erik Montnemery 82f54eb9d2
Adjust the default backup name (#133668) 2024-12-21 09:38:59 +01:00
Erik Montnemery 5afb9a5053
Validate password before restoring backup (#133647)
* Validate password before restoring backup

* Raise specific error when password is incorrect
2024-12-20 15:43:46 +01:00
Erik Montnemery 10478f4ca5
Fix logic in backup retention filter (#133654) 2024-12-20 09:19:57 -05:00