Closed organizedgrime closed 11 months ago
Tomb cli should be able to get the current metadata from the metadata service for an individual bucket, and begin restoration using that. If it encounters a data block that is not present it should request the storage providers associated with that bucket using the API defined in [ENG-304](https://linear.app/banyan/issue/ENG-304/block-storage-retrieval-staging-service). It should try each of the storage providers returned in the order they were returned to attempt to retrieve the blocks. When multiple blocks are needed it should attempt to continue using the storage provider returned until it encounters a 404 error as most blocks that are part of a restore will most likely be stored together. If a 404 is encountered the next storage provider should be tried. If the [ENG-307](https://linear.app/banyan/issue/ENG-307/metadata-service-block-lookup) API returns a non-200 response the restore should be aborted with an error. If an individual block is not available in all of the returned storage providers, the restore should be aborted with an error.
This includes the already approved changes from this PR.
as such most of the changes in this PR are block tracking and the new rustfmt. full reconstruction functionality will not be available until claudia/screaming is merged on tomb and refactor-compat is merged on core alongside it.