Commit graph

675 commits

Author SHA1 Message Date
Inex Code 4b575b6138 fix(graphql): duplicate imports 2023-07-20 18:25:32 +03:00
Inex Code 0245d629fd refactor(backups): linting 2023-07-20 18:24:26 +03:00
Inex Code 2df448a4a9 fix(backups): Do not shut down the service during backup
We do not want the user to expirience outages during automatic backups.
Generally, they are not even needed.
We should use hooks to service-specific tasks, such as
creating the database dump, so we don't have to shut down Postgres.
2023-07-20 17:11:02 +03:00
Houkime f4ac3d29a9 feature(backup):remove code for finegrained autobackup control 2023-07-19 15:36:25 +00:00
Houkime 466160dbf9 feature(backup):disable finegrain control over services to back up 2023-07-19 15:36:25 +00:00
Inex Code 5253780cc8 style: linting of backups module 2023-07-19 15:59:51 +03:00
Inex Code 3067d353d8 fix(backups): Do not remove failsafe snapshot after recovery 2023-07-19 15:59:29 +03:00
Houkime fa53264136 refactor(backup):remove unused verify arg from do_restore 2023-07-19 10:51:36 +00:00
Houkime a303e5ce37 Merge branch 'restic-rewrite' of https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api into restic-rewrite 2023-07-19 10:35:30 +00:00
Inex Code 8b504993d0 fix(backups): backup strategies were unused 2023-07-18 20:15:22 +03:00
Houkime 45011450c5 feature(backup):calculate needed space for inplace restoration 2023-07-17 16:05:00 +03:00
Houkime 097cf50b37 fix(servers): hopefully fix moving 2023-07-17 16:05:00 +03:00
Houkime c53f35c947 feature(servers): set default timeout of server operations to 10 min 2023-07-17 16:05:00 +03:00
Houkime b001e198bf feature(backups): stop services before restores 2023-07-17 16:05:00 +03:00
Houkime 40ad1b5ce4 feature(backups): stop services before backups 2023-07-17 16:05:00 +03:00
Houkime a7427f3cb5 test(backups): do not store the status file in backupped folders 2023-07-17 16:05:00 +03:00
Houkime 86c2ae2c1f refactor(backups): make a StoppedService context manager 2023-07-17 16:05:00 +03:00
Houkime ea4e53f826 test(backups): make delay settable per dummyservice 2023-07-17 16:05:00 +03:00
Houkime e2b906b219 test(backups): test async service start n stop simulation 2023-07-17 16:05:00 +03:00
Houkime d33e9d6335 test(backups): simulating async service start n stop 2023-07-17 16:05:00 +03:00
Houkime 8e29634d02 feature(utils): a hopefully reusable waitloop 2023-07-17 16:05:00 +03:00
Houkime be95b84d52 feature(backups): expose restore strategies to the API 2023-07-17 16:05:00 +03:00
Houkime cacbf8335d fix(backups): actually mount if asked for an inplace restore 2023-07-17 16:05:00 +03:00
Houkime 65ce86f0f9 test(backups): test out that pre-restore backup plays nice with jobs 2023-07-17 16:05:00 +03:00
Houkime 95e4296d0b feature(backups): implement inplace restore strategy 2023-07-17 16:05:00 +03:00
Houkime 59fe386463 feature(backups): restore strategies enum 2023-07-17 16:05:00 +03:00
Houkime 02e3c9bd5e feature(backups): forgetting snapshots 2023-07-17 16:05:00 +03:00
Houkime f361f44ded feature(backups): check restore exit code 2023-07-17 16:05:00 +03:00
Houkime 4423db7458 refactor(backups): download a copy before replacing original 2023-07-17 16:05:00 +03:00
Houkime 9137536294 feature(backups): mounting a repo 2023-07-17 16:05:00 +03:00
Houkime 9a28c0ebcb refactor(backups): move syncing (non-restic) into backup utils 2023-07-17 16:05:00 +03:00
Houkime 7ad5f91be1 refactor(backups): move output yielding into backup utils 2023-07-17 16:05:00 +03:00
Houkime 1c28984475 feature(backups): a wrapper for rclone sync 2023-07-17 16:05:00 +03:00
Inex Code 2df930b9ba feat(backups): Add backup descriptions for UI 2023-07-17 16:05:00 +03:00
Inex Code 2c21bd2a14 feat(backups): expose if the service can be backed up 2023-07-17 16:05:00 +03:00
Inex Code 21c5f6814c style: fix styling 2023-07-17 16:05:00 +03:00
Houkime 559de63221 fix(jobs): make finishing the job set progress to 100 2023-07-17 16:05:00 +03:00
Inex Code ba9270755a feat(jobs): return type_id of the job in graphql api 2023-07-17 16:05:00 +03:00
Houkime 0e13e61b73 fix(services): proper backup progress reporting 2023-07-17 16:05:00 +03:00
Houkime 1fb5e3af97 fix(services): cleanup a stray get_location 2023-07-17 16:05:00 +03:00
Houkime 2dd9da9a96 fix(backups): register the correct tasks 2023-07-17 16:05:00 +03:00
Inex Code a7d0f6226f fix(backups): missing space in rclone args 2023-07-17 16:05:00 +03:00
Houkime e8f1f39b18 refactor(backups): rename service_snapshot_size to snapshot_restored_size 2023-07-17 16:05:00 +03:00
Houkime f804c88fa6 refactor(backups): remove the by-service getting of cached snapshots 2023-07-17 16:05:00 +03:00
Houkime 6004977845 refactor(backups): rename force_snapshot_reload to force_snapshot_cache_reload 2023-07-17 16:05:00 +03:00
Houkime 3551813b34 refactor(backups): merge sync_all_snapshots with force_snapshot_reload 2023-07-17 16:05:00 +03:00
Houkime ce55416b26 refactor(backups): straighten get_all_snapshots 2023-07-17 16:05:00 +03:00
Houkime 16a96fe0fa refactor(backups): delete sync_service_snapshots 2023-07-17 16:05:00 +03:00
Houkime f2161f0532 refactor(backups): privatize assert_restorable and restore_snapshot_from_id 2023-07-17 16:05:00 +03:00
Houkime cb2273323f refactor(backups): group operations together 2023-07-17 16:05:00 +03:00
Houkime 6369042420 refactor(backups): move reset() to top because toplevel interface 2023-07-17 16:05:00 +03:00
Houkime 3edb38262f refactor(backups): make redis and json provider related lowlevels private 2023-07-17 16:05:00 +03:00
Houkime 3684345c2d refactor(backups): make construct_provider not public 2023-07-17 16:05:00 +03:00
Houkime 6b0c55a786 refactor(backups): make lookup_provider not public 2023-07-17 16:05:00 +03:00
Houkime dbac010303 refactor(backups): reorder imports 2023-07-17 16:05:00 +03:00
Houkime c09f2f393b refactor(backups): api readability reorg 2023-07-17 16:05:00 +03:00
Houkime 4b1594ca22 refactoring(backups): backuper -> backupper 2023-07-17 16:05:00 +03:00
Houkime c94b4d07bf fix(tokens-repo): persistent hashing 2023-07-17 16:05:00 +03:00
Inex Code 4225772573 fix(backups): Providers were not initialized corretly 2023-07-17 16:05:00 +03:00
Inex Code f27a3df807 refactor(backups): fix typing errors 2023-07-17 16:05:00 +03:00
Inex Code b78ee5fcca refactor(api): Group mutations
I've learned that there is no problem in grouping mutations like we do with queries.
This is a big mistake from my side, now we have legacy not so conveniently placed endpoints.
I've grouped all mutations, left the copies of old ones flattened in the root for backwards compatibility.
We will migrate to mutation groups on client side, and backups now only use grouped mutations.
Tests are updated.
2023-07-17 16:05:00 +03:00
Houkime 53dfb38284 test(backups): ensure asking to reload snaps does not explode the server 2023-07-17 16:05:00 +03:00
Houkime ecf72948b1 test(backups): setting autobackup period 2023-07-17 16:05:00 +03:00
Houkime f829a34dc7 refactor(backups): delete legacy provider setting 2023-07-17 16:05:00 +03:00
Houkime 9f096ed2c0 feature(backups): actually dealing with situation when the provider is not configured 2023-07-17 16:05:00 +03:00
Houkime cd32aa83b7 refactor(backups): NoneBackupper class for those cases when we do not know 2023-07-17 16:05:00 +03:00
Houkime a56461fb96 refactor(backups): make a dir for backuppers 2023-07-17 16:05:00 +03:00
Houkime 806fb3c84b feature(backups): resetting json config too 2023-07-17 16:05:00 +03:00
Houkime 1fd5db9ff3 fix(backups): fix output API return types for configuration 2023-07-17 16:05:00 +03:00
Houkime 5d95c1b44e test(backups): preliminary test of repo reset 2023-07-17 16:05:00 +03:00
Houkime 1c96743c5d test(backups): test reinitting repository 2023-07-17 16:05:00 +03:00
Houkime 38de01da8b refactor(backups): cleanup localfile-specific logic 2023-07-17 16:05:00 +03:00
Houkime 8475ae3375 refactor(backups): make localfile repos normal 2023-07-17 16:05:00 +03:00
Houkime 53638b7e06 test(backups): make dummy service more compliant 2023-07-17 16:05:00 +03:00
Inex Code 93b98cd4fd fix(backups): Handle orphaned snapshots 2023-07-17 16:05:00 +03:00
Inex Code 421c92d12e fix(backups): return type of encryption key 2023-07-17 16:05:00 +03:00
Inex Code c603394449 fix(backups): try to actually get backup configuration 2023-07-17 16:05:00 +03:00
Houkime b04dfc6c4e fix(backups): register queries 2023-07-17 16:05:00 +03:00
Houkime 42a5b6f70a test(backups): test backup API - backing up 2023-07-17 16:05:00 +03:00
Inex Code 32a242b560 feat(backups): register backups in GraphQL schema 2023-07-17 16:05:00 +03:00
Inex Code a4b0e6f208 fix: BackupConfiguration argument order 2023-07-17 16:05:00 +03:00
Houkime ad130e392c feature(backups): check available space before restoring 2023-07-17 16:05:00 +03:00
Houkime 780c12df6c refactor(backups): expect one more error of restic json output parsing 2023-07-17 16:05:00 +03:00
Houkime 6da0791b47 feature(backups): integration between restore and jobs 2023-07-17 16:05:00 +03:00
Houkime 792dcd459d fix(backups): return one job, not an array of one 2023-07-17 16:05:00 +03:00
Houkime 5100f1a497 fix(backups): return 400, not 300 2023-07-17 16:05:00 +03:00
Houkime 44e45a5124 BREAKING CHANGE(backups): support only individual service backup requests(combinable) 2023-07-17 16:05:00 +03:00
Houkime 0b8f77e6f7 feature(backups): set autobackup period from gql 2023-07-17 16:05:00 +03:00
Houkime e3545d4541 feature(backups): get all snapshots if requested by api 2023-07-17 16:05:00 +03:00
Houkime 550f7fa620 refactor(backups): introduce get_all_snapshots() 2023-07-17 16:05:00 +03:00
Houkime cc073155db feature(backups): feature(backups): return a snapshot from start_backup 2023-07-17 16:05:00 +03:00
Houkime 891993e4cd feature(backups): a graphql call to invalidate cache 2023-07-17 16:05:00 +03:00
Houkime 7e022e0cfe feature(backups): graphql mutation for restore 2023-07-17 16:05:00 +03:00
Houkime 44ddd27e84 fix(backups): return correct snapshots per service 2023-07-17 16:05:00 +03:00
Houkime 761b6be4e5 refactor(backups): global snapshots 2023-07-17 16:05:00 +03:00
Houkime a76b4ac134 feature(backups): start backup graphql API 2023-07-17 16:05:00 +03:00
Houkime ac9fbbff3e feature(backups): drop repository call 2023-07-17 16:05:00 +03:00
Houkime bdae6cfb75 feature(backups): global init instead of per-service 2023-07-17 16:05:00 +03:00
Houkime e7683352cd feature(backups): a graphql query to get provider info 2023-07-17 16:05:00 +03:00
Houkime d0b27da641 feature(backups): init repo mutation 2023-07-17 16:05:00 +03:00