oxidecomputer / oxidecomputer/omicron

ideally, omicron-omdb should not depend on omicron-nexus

Open
#10,852 2 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

#10447 added a dependency from the omicron-omdb crate to omicron-nexus in order to access omicron_nexus::app::crucible::crucible_pantry_client_volume_health. This function is not used by Nexus itself and appears to exist in Nexus to rely on some of the types defined in the same module.

While I have not landed this change yet, I've had plans for a while to split up the builds during cargo xtask releng to allow the packages included on the host OS to be built separately from the zones that are distributed on their own in the TUF repo, with the goal of parallelizing the two longest tasks: building omicron-nexus and building the host OS image. omdb is in the switch zone and thus the host image, and adding this edge to the dependency graph eliminates this optimization.

(Note: the dev-dependency from omicron-omdb to omicron-nexus is fine.)

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 tracing omicron_nexus::app::crucible::crucible_pantry_client_volume_health and the types in its module, then inspect the omicron-omdb production dependency and the cargo xtask releng build graph. Done means omicron-omdb no longer depends on omicron-nexus for its normal build, the releng host-image and Nexus builds can be independent, and the dev-dependency remains intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.