Skip to content

Conversation

@sunshowers
Copy link
Contributor

@sunshowers sunshowers commented Nov 20, 2025

Part of #9425.

Use a YYYYMMDDNN pattern to allow for multiple API version changes in a day while keeping date-based versioning in place.

Also pull in dropshot and dropshot-api-manager updates, required to make the api-version header optional and support extra validation with versioned APIs, respectively.

Created using spr 1.3.6-beta.1
Copy link
Contributor

@sudomateo sudomateo left a comment

Choose a reason for hiding this comment

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

Thanks for working on this! I left two comments regarding external clients, specifically the Go SDK.

Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1
@david-crespo
Copy link
Contributor

api-version header is on auto-merge in console: oxidecomputer/console#2981

}
if spec.paths.paths.get("/v1/projects").is_none() {
cx.report_error(anyhow!("Expected a path for /v1/projects"));
if !is_blessed {
Copy link
Collaborator

Choose a reason for hiding this comment

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

There's no reason the checks in this if block ever wouldn't be true for blessed specs, right?

Would it make sense to skip the entire "extra" validation for blessed versions?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The specific thing I'm concerned about here is: what if we add checks in the future that old blessed versions fail? We want to treat blessed versions as immutable after all.

We also want to write tags out for the latest version, regardless of whether it's blessed. That's why the lint checks are guarded by !is_blessed and the tags by is_latest.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Discussed this in #oxide-control-plane, decided to split it into two functions to make this clearer. Also added a comment.

Created using spr 1.3.6-beta.1
@sunshowers sunshowers merged commit f65b0e4 into main Dec 3, 2025
19 checks passed
@sunshowers sunshowers deleted the sunshowers/spr/nexus-make-the-external-api-versioned branch December 3, 2025 22:26
sudomateo added a commit to oxidecomputer/oxide.go that referenced this pull request Dec 9, 2025
Updated the generator binary to support versioned Nexus OpenAPI
specification files, as introduced in oxidecomputer/omicron#9430.

Closes SSE-129.
sudomateo added a commit to oxidecomputer/oxide.go that referenced this pull request Dec 9, 2025
Updated the generator binary to support versioned Nexus OpenAPI
specification files, as introduced in oxidecomputer/omicron#9430.

Closes SSE-129.
sudomateo added a commit to oxidecomputer/oxide.go that referenced this pull request Dec 9, 2025
Updated the generator binary to support versioned Nexus OpenAPI
specification files, as introduced in
oxidecomputer/omicron#9430.

Closes SSE-129.
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.

5 participants