oxidecomputer / oxidecomputer/omicron

Bootstrap agent APIs are split between a dropshot server and a raw TCP server

Open
#3,835 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

Bootstrap agent currently runs two servers:

  1. A raw TCP server that uses length-prefixed JSON messages; this is how sled initialization requests arrive during RSS
  2. A dropshot server that provides APIs to (a) get basic information about the sled (baseboard, list of components, status of RSS if it's running), (b) trigger RSS, (c) reset the rack, and (d) reset the sled.

The original intent behind 1 was that the bootstrap server, prior to rack setup, has no way to authenticate requests, so we would use sprockets to at least ensure that the requester running a valid Oxide root of trust. Wrapping sprockets around dropshot appeared difficult, so we opted for a raw server instead. However:

a. We don't actually have sprockets wired up yet
b. The bootstrap dropshot server has grown operations that are equally "dangerous" (2 b, c, d above)

making the split awkward and unnecessary. The easy option is to just leave this alone until we decide what we're doing about auth on the bootstrap network; we could also consider removing the raw TCP server and rolling sled init into the dropshot server.

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 by locating the bootstrap agent's raw TCP and Dropshot server entry points and tracing the sled initialization and management operations each exposes. Check whether sprockets or another authentication decision has been made. Done requires an agreed server architecture and implementation plan, or an explicit decision to defer the consolidation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.