Skip to content

Conversation

sunshowers
Copy link
Contributor

@sunshowers sunshowers commented Sep 24, 2025

Part of oxidecomputer/omicron#8922.

With this change, APIs can be managed via cargo xtask openapi, similar to the flow in Omicron.

% cargo xtask openapi list
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
     Running `target/debug/propolis-dropshot-apis list`
1) propolis-server (Oxide Propolis Server API, lockstep, v0.0.1)
note: run with -v for more information
rain@sunshowers-linux dev ...dev/oxide/propolis {23:50} [0]
% cargo xtask openapi generate
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s
     Running `target/debug/propolis-dropshot-apis generate`
  Generating OpenAPI documents from API definitions ...
     Loading local OpenAPI documents from "/home/rain/dev/oxide/propolis/openapi" ...
     Loading blessed OpenAPI documents from git revision "origin/master" path "openapi"
     -------
    Updating 1 OpenAPI document...
   Unchanged propolis-server (lockstep v0.0.1): Oxide Propolis Server API
     Loading local OpenAPI documents from "/home/rain/dev/oxide/propolis/openapi" ...
  Rechecking all local files
     -------
     Success 1 document: 0 changes made, 1 unchanged, 0 failed

Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1
@sunshowers sunshowers changed the title [wip] move to dropshot-api-manager move to dropshot-api-manager Sep 24, 2025
@sunshowers sunshowers marked this pull request as ready for review September 24, 2025 23:50
Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1
pub fn all_apis() -> anyhow::Result<ManagedApis> {
let apis = vec![ManagedApiConfig {
ident: "propolis-server",
versions: Versions::Lockstep { version: semver::Version::new(0, 0, 1) },
Copy link
Member

@iximeow iximeow Sep 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and presumably in the future we'll move this to Versioned with the latest version and whatever the previous release's API was, right? (i don't think this was explicitly written out for APIs outside Omicron before, and being able to write that is part of the motivation here aka oxidecomputer/omicron#8727?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, making these APIs versioned (as part of self-service update) is the overall motivation for the series of changes I've been making to all of these repos. See oxidecomputer/omicron#8922 for overall status tracking.

Created using spr 1.3.6-beta.1
@sunshowers sunshowers changed the title move to dropshot-api-manager move to Dropshot API manager Sep 27, 2025
Created using spr 1.3.6-beta.1
@sunshowers sunshowers requested a review from pfmooney September 30, 2025 20:55
Created using spr 1.3.6-beta.1
@sunshowers sunshowers merged commit 425f76b into master Oct 7, 2025
11 checks passed
@sunshowers sunshowers deleted the sunshowers/spr/wip-move-to-dropshot-api-manager branch October 7, 2025 21:40
iximeow added a commit to oxidecomputer/omicron that referenced this pull request Oct 18, 2025
Propolis changes:

* oxidecomputer/propolis#950
* oxidecomputer/propolis#952
* oxidecomputer/propolis#951
* oxidecomputer/propolis#954
* oxidecomputer/propolis#957
* oxidecomputer/propolis#960
* oxidecomputer/propolis#961
* oxidecomputer/propolis#955

Crucible changes:

* oxidecomputer/crucible#1773
* oxidecomputer/crucible#1774
* oxidecomputer/crucible#1780
* oxidecomputer/crucible#1778

Crucible shouldn't have functional changes here, Propolis' big ones are
@sunshowers' work moving Propolis to versioned APIs, plus propolis#960
turning the crank on MAXCPU.

propolis#961 changes the initial Milan CPU profile one last time before
the release in service of propolis#959. Propolis will clear [this
bit](https://github.com/oxidecomputer/omicron/blob/d74f5e3f1ae0a378dcdb9795a0ada2426702b046/nexus/src/app/instance_platform/cpu_platform.rs#L423).
Later we want to actually set up leaf 8000_001E, so after this merges
I'll have a followup to remove that leaf from the inital Milan
definition to keep the profile constant when `propolis-server` is
smarter about the leaf.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants