oxidecomputer / oxidecomputer/omicron

sled-agent-client shouldn't depend on propolis-client

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

the dependency exists to re-export Crucible types: https://github.com/oxidecomputer/omicron/blob/b845b31a5eb6f91cbe5d4650a1e67da8ac0eaa2e/clients/sled-agent-client/src/lib.rs#L15

it seems to me that we should either:

  • type the CrucibleOpts parts of propolis-server's API as an opaque string or something, if the type should be fully opaque to Propolis (as I think VolmueConstructionRequest is?), or
  • actually provide the Crucible type as part of propolis-api-types in an explicit admission that the item from Crucible is necessary as part of propolis-server's HTTP API.

because this dependency exists, it complicates ls-apis and requires some extra API exclusion rules in api-manifest.toml. it'll be really nice to clean up the propolis-client-related rules there once we've untangled this.

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 at clients/sled-agent-client/src/lib.rs near line 15 and inspect the propolis-server API types involving CrucibleOpts, including VolumeConstructionRequest. Review ls-apis and api-manifest.toml to understand the current exclusions; done means the dependency and related exclusion rules are untangled after deciding whether CrucibleOpts is opaque or belongs in propolis-api-types.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.