oxidecomputer / oxidecomputer/omicron
need infrastructure for client-side-versioned APIs
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
Details in RFD 567.
Until we implement this, changes to client-side-versioned APIs risk breaking during a self-service update. That means we need to be careful to change such APIs only in backwards-compatible ways. This is something we've tried hard to avoid imposing on ourselves at development-time but doing that in these cases requires having implemented RFD 567.
This currently affects the following APIs (sourced from cargo xtask ls-apis check):
- Bootstrap Agent (bootstrap-agent-client, exposed by omicron-sled-agent). Reason: depends on itself (i.e., instances call each other).
- Wicketd Installinator (installinator-client, exposed by wicketd). Reason: client is provided implicitly by the operator in the TUF repo that they upload to the system.
- Nexus Internal API (nexus-client, exposed by omicron-nexus). Reason: Circular dependencies between Nexus and other services.
- Crucible Repair (repair-client, exposed by crucible-downstairs). Reason: depends on itself (i.e., instances call each other).
- Repo Depot API (repo-depot-client, exposed by omicron-sled-agent). Reason: depends on itself (i.e., instances call each other)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with RFD 567 and run cargo xtask ls-apis check to understand the five affected APIs: Bootstrap Agent, Wicketd Installinator, Nexus Internal API, Crucible Repair, and Repo Depot. The work is complete when the RFD 567 infrastructure supports these client-side-versioned APIs and avoids breaking self-service updates.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100