Open
Description
Note: async
is overloaded. Usage here refers to an "asynchronous endpoint", as described in RFD 4, not the async
Rust keyword.
As discussed in #385 (comment) , Omicron is growing a reasonably sized API surface. As @davepacheco mentioned, "most things that use sagas... probably ought to be async".
At the time of writing this bug, none of our endpoints are async. We would benefit from:
- Identifying long-running operations, and defining a set which are good candidates to be async (at minimum, "create instance" seems like a good candidate).
- Prototype a couple endpoints as async, returning an ID, and providing a wait-for-completion API.
- Iterate on ergonomics, providing utilities (or possibly changes to Dropshot) making these operations as easy to write as possible.