oxidecomputer / oxidecomputer/omicron

need infrastructure for client-side-versioned APIs

Open
#8,785 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.