Feature #14199

Updated by Peter Amstutz 9 months ago

API Enable clients to reference blocks from remote clusters, and have those blocks automatically copied to the local cluster.

Design sketch:

* Feature to
instruct keepstore to fetch pull a remote block, save it, and return signed locator (variation on "proxy a
block read request" request")
* Controller instructs keepstore to pull each block
with +R signature and rewrites the added feature of saving the block).

manifest with local signatures
* Because
this triggered by could take a while, controller should return "202 Accepted" so the query flag? doesn't time out
* Client needs be indicate it understands "202 Accepted" (probably a query parameter)
* If it is a POST request, how does the client know when the collection is ready?
Basically an explicit "cache block" operation)

Proposed API:

Do we create a HEAD request (equivalent to new empty collection with a note "being populated", return the GET request) on remote signed locator uuid, and look for a response header then update it when the complete manifest is ready?
** If not, then it needs to return some other token
that has a new locator with local block signature. This header should can be called "X-Keep-Locator" (?).

All keepstore GET and HEAD responses for block requests should include this new header.
used to resolve the collection being downloaded by controller into the real collection when ready
** What happens if controller falls over while it is processing the collection?