diff --git a/Cargo.lock b/Cargo.lock index 7af9008f2e0..709ffdd7a6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -759,7 +759,7 @@ dependencies = [ "bitflags 2.9.4", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -782,7 +782,7 @@ dependencies = [ "bitflags 2.9.4", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -1745,7 +1745,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -3094,9 +3094,9 @@ dependencies = [ [[package]] name = "dropshot-api-manager" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aee20ca777e652264a3334e41c9b548bdd848562e3918541ab04d6ceb3b7dd56" +checksum = "f45b53c5eab26bfb0246e53c6c586558331c6e4efa3dc29ff9fb0373a6c3d87a" dependencies = [ "anyhow", "atomicwrites", @@ -3111,7 +3111,7 @@ dependencies = [ "indent_write", "newtype_derive", "openapiv3", - "owo-colors 4.2.2", + "owo-colors 4.2.3", "paste", "semver 1.0.27", "serde_json", @@ -3124,9 +3124,9 @@ dependencies = [ [[package]] name = "dropshot-api-manager-types" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0103ef0b1a219c1a620e0b01659f6a27185df697876388144b1fb9637123e63" +checksum = "b78a68bd7f0470aec18807e53b0f975661453dae80995c03bbb370d9d0c6eb6f" dependencies = [ "anyhow", "camino", @@ -8556,7 +8556,7 @@ dependencies = [ "omicron-test-utils", "omicron-uuid-kinds", "omicron-workspace-hack", - "owo-colors 4.2.2", + "owo-colors 4.2.3", "oxide-tokio-rt", "oximeter-client", "oximeter-db", @@ -9028,6 +9028,8 @@ dependencies = [ "ipnet", "ipnetwork", "itertools 0.10.5", + "itertools 0.12.1", + "itertools 0.13.0", "lalrpop-util", "lazy_static", "libc", @@ -9337,9 +9339,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "owo-colors" -version = "4.2.2" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" [[package]] name = "oxide-client" @@ -13489,7 +13491,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.111", @@ -15604,7 +15606,7 @@ dependencies = [ "linear-map", "omicron-test-utils", "omicron-workspace-hack", - "owo-colors 4.2.2", + "owo-colors 4.2.3", "petgraph 0.8.2", "schemars 0.8.22", "serde", @@ -16141,7 +16143,7 @@ dependencies = [ "omicron-common", "omicron-passwords", "omicron-workspace-hack", - "owo-colors 4.2.2", + "owo-colors 4.2.3", "proptest", "ratatui", "reqwest", @@ -16184,7 +16186,7 @@ dependencies = [ "maplit", "omicron-common", "omicron-workspace-hack", - "owo-colors 4.2.2", + "owo-colors 4.2.3", "oxnet", "schemars 0.8.22", "serde", diff --git a/Cargo.toml b/Cargo.toml index 320e9f9302f..fb5315460c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -458,8 +458,8 @@ dns-server-api = { path = "dns-server-api" } dns-service-client = { path = "clients/dns-service-client" } dpd-client = { git = "https://github.com/oxidecomputer/dendrite", rev = "ab30fa91227fd478bfe0e023310ca83dec0bc22b" } dropshot = { version = "0.16.6", features = [ "usdt-probes" ] } -dropshot-api-manager = "0.2.4" -dropshot-api-manager-types = "0.2.4" +dropshot-api-manager = "0.3.0" +dropshot-api-manager-types = "0.3.0" dyn-clone = "1.0.20" either = "1.15.0" ereport-types = { path = "ereport/types" } diff --git a/clickhouse-admin/types/versions/src/initial/config.rs b/clickhouse-admin/types/versions/src/initial/config.rs index 45694012f66..2a78a267062 100644 --- a/clickhouse-admin/types/versions/src/initial/config.rs +++ b/clickhouse-admin/types/versions/src/initial/config.rs @@ -47,7 +47,7 @@ pub struct ReplicaConfig { pub tcp_port: u16, /// Port for interserver HTTP connections pub interserver_http_port: u16, - /// Configuration of clusters used by the Distributed table engine and by the cluster + /// Configuration of clusters used by the Distributed table engine and bythe cluster /// table function pub remote_servers: RemoteServers, /// Contains settings that allow ClickHouse servers to interact with a Keeper cluster diff --git a/dev-tools/dropshot-apis/src/main.rs b/dev-tools/dropshot-apis/src/main.rs index e70d1c023c4..158330e6127 100644 --- a/dev-tools/dropshot-apis/src/main.rs +++ b/dev-tools/dropshot-apis/src/main.rs @@ -11,7 +11,9 @@ use clap::Parser; use clickhouse_admin_api::*; use cockroach_admin_api::*; use dns_server_api::*; -use dropshot_api_manager::{Environment, ManagedApiConfig, ManagedApis}; +use dropshot_api_manager::{ + Environment, ManagedApi, ManagedApiConfig, ManagedApis, +}; use dropshot_api_manager_types::{ ManagedApiMetadata, ValidationContext, Versions, }; @@ -51,7 +53,7 @@ fn environment() -> anyhow::Result { // TODO The metadata here overlaps with metadata in api-manifest.toml. fn all_apis() -> anyhow::Result { let apis = vec![ - ManagedApiConfig { + ManagedApi::from(ManagedApiConfig { title: "Bootstrap Agent API", versions: Versions::new_versioned( bootstrap_agent_api::supported_versions(), @@ -64,9 +66,11 @@ fn all_apis() -> anyhow::Result { }, api_description: bootstrap_agent_api_mod::stub_api_description, ident: "bootstrap-agent", - extra_validation: None, - }, - ManagedApiConfig { + }) + // The bootstrap-agent API is client-side-versioned and currently frozen, + // so we allow trivial changes to go through. + .allow_trivial_changes_for_latest(), + ManagedApi::from(ManagedApiConfig { title: "ClickHouse Cluster Admin Keeper API", versions: Versions::new_versioned( clickhouse_admin_api::supported_versions(), @@ -83,9 +87,8 @@ fn all_apis() -> anyhow::Result { api_description: clickhouse_admin_keeper_api_mod::stub_api_description, ident: "clickhouse-admin-keeper", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "ClickHouse Cluster Admin Server API", versions: Versions::new_versioned( clickhouse_admin_api::supported_versions(), @@ -102,9 +105,8 @@ fn all_apis() -> anyhow::Result { api_description: clickhouse_admin_server_api_mod::stub_api_description, ident: "clickhouse-admin-server", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "ClickHouse Single-Node Admin Server API", versions: Versions::new_versioned( clickhouse_admin_api::supported_versions(), @@ -121,9 +123,8 @@ fn all_apis() -> anyhow::Result { api_description: clickhouse_admin_single_api_mod::stub_api_description, ident: "clickhouse-admin-single", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "CockroachDB Cluster Admin API", versions: Versions::new_versioned( cockroach_admin_api::supported_versions(), @@ -139,9 +140,8 @@ fn all_apis() -> anyhow::Result { }, api_description: cockroach_admin_api_mod::stub_api_description, ident: "cockroach-admin", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "Internal DNS", versions: Versions::new_versioned( dns_server_api::supported_versions(), @@ -154,9 +154,8 @@ fn all_apis() -> anyhow::Result { }, api_description: dns_server_api_mod::stub_api_description, ident: "dns-server", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "Oxide Management Gateway Service API", versions: Versions::new_versioned(gateway_api::supported_versions()), metadata: ManagedApiMetadata { @@ -170,9 +169,8 @@ fn all_apis() -> anyhow::Result { }, api_description: gateway_api_mod::stub_api_description, ident: "gateway", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "Installinator API", versions: Versions::new_versioned( installinator_api::supported_versions(), @@ -188,9 +186,11 @@ fn all_apis() -> anyhow::Result { }, api_description: installinator_api_mod::stub_api_description, ident: "installinator", - extra_validation: None, - }, - ManagedApiConfig { + }) + // The installinator API is client-side-versioned and currently frozen, + // so we allow trivial changes to go through. + .allow_trivial_changes_for_latest(), + ManagedApi::from(ManagedApiConfig { title: "Oxide Region API", versions: Versions::new_versioned( nexus_external_api::supported_versions(), @@ -205,9 +205,9 @@ fn all_apis() -> anyhow::Result { }, api_description: nexus_external_api_mod::stub_api_description, ident: "nexus", - extra_validation: Some(nexus_external_api::validate_api), - }, - ManagedApiConfig { + }) + .with_extra_validation(nexus_external_api::validate_api), + ManagedApi::from(ManagedApiConfig { title: "Nexus internal API", versions: Versions::new_versioned( nexus_internal_api::supported_versions(), @@ -220,9 +220,11 @@ fn all_apis() -> anyhow::Result { }, api_description: nexus_internal_api_mod::stub_api_description, ident: "nexus-internal", - extra_validation: None, - }, - ManagedApiConfig { + }) + // The Nexus internal API is client-side-versioned and currently frozen, + // so we allow trivial changes to go through. + .allow_trivial_changes_for_latest(), + ManagedApi::from(ManagedApiConfig { title: "Nexus lockstep API", versions: Versions::new_lockstep(semver::Version::new(0, 0, 1)), metadata: ManagedApiMetadata { @@ -233,9 +235,8 @@ fn all_apis() -> anyhow::Result { }, api_description: nexus_lockstep_api_mod::stub_api_description, ident: "nexus-lockstep", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "NTP Admin API", versions: Versions::new_versioned( ntp_admin_api::supported_versions(), @@ -248,9 +249,8 @@ fn all_apis() -> anyhow::Result { }, api_description: ntp_admin_api_mod::stub_api_description, ident: "ntp-admin", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "Oxide Oximeter API", versions: Versions::new_versioned( oximeter_api::supported_versions(), @@ -263,9 +263,8 @@ fn all_apis() -> anyhow::Result { }, api_description: oximeter_api_mod::stub_api_description, ident: "oximeter", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "Oxide TUF Repo Depot API", versions: Versions::new_versioned( repo_depot_api::supported_versions(), @@ -278,9 +277,11 @@ fn all_apis() -> anyhow::Result { }, api_description: repo_depot_api_mod::stub_api_description, ident: "repo-depot", - extra_validation: None, - }, - ManagedApiConfig { + }) + // The Repo Depot API is client-side-versioned and currently frozen, + // so we allow trivial changes to go through. + .allow_trivial_changes_for_latest(), + ManagedApi::from(ManagedApiConfig { title: "Oxide Sled Agent API", versions: Versions::new_versioned( sled_agent_api::supported_versions(), @@ -293,9 +294,8 @@ fn all_apis() -> anyhow::Result { }, api_description: sled_agent_api_mod::stub_api_description, ident: "sled-agent", - extra_validation: None, - }, - ManagedApiConfig { + }), + ManagedApi::from(ManagedApiConfig { title: "Oxide Technician Port Control Service", versions: Versions::new_lockstep(semver::Version::new(0, 0, 1)), metadata: ManagedApiMetadata { @@ -308,8 +308,7 @@ fn all_apis() -> anyhow::Result { }, api_description: wicketd_api_mod::stub_api_description, ident: "wicketd", - extra_validation: None, - }, + }), ]; let apis = ManagedApis::new(apis) diff --git a/workspace-hack/Cargo.toml b/workspace-hack/Cargo.toml index 7e394233a5c..19b082fd72e 100644 --- a/workspace-hack/Cargo.toml +++ b/workspace-hack/Cargo.toml @@ -76,6 +76,7 @@ indexmap = { version = "2.12.1", features = ["serde"] } inout = { version = "0.1.3", default-features = false, features = ["std"] } ipnet = { version = "2.11.0", features = ["serde"] } ipnetwork = { version = "0.21.1", features = ["schemars", "serde"] } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13.0" } lalrpop-util = { version = "0.19.12" } lazy_static = { version = "1.5.0", default-features = false, features = ["spin_no_std"] } libc = { version = "0.2.174", features = ["extra_traits"] } @@ -216,6 +217,7 @@ indexmap = { version = "2.12.1", features = ["serde"] } inout = { version = "0.1.3", default-features = false, features = ["std"] } ipnet = { version = "2.11.0", features = ["serde"] } ipnetwork = { version = "0.21.1", features = ["schemars", "serde"] } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13.0" } lalrpop-util = { version = "0.19.12" } lazy_static = { version = "1.5.0", default-features = false, features = ["spin_no_std"] } libc = { version = "0.2.174", features = ["extra_traits"] } @@ -382,7 +384,8 @@ dof-9fbad63c4bcf4a8f = { package = "dof", version = "0.4.0", default-features = getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3.4", default-features = false, features = ["std"] } hyper-rustls = { version = "0.27.7", features = ["http2", "ring", "webpki-tokio"] } hyper-util = { version = "0.1.19", features = ["full"] } -itertools = { version = "0.10.5" } +itertools-5ef9efb8ec2df382 = { package = "itertools", version = "0.12.1" } +itertools-93f6ce9d446188ac = { package = "itertools", version = "0.10.5" } miniz_oxide = { version = "0.8.5", default-features = false, features = ["with-alloc"] } mio = { version = "1.0.2", features = ["net", "os-ext"] } nom = { version = "7.1.3" } @@ -401,7 +404,8 @@ dof-9fbad63c4bcf4a8f = { package = "dof", version = "0.4.0", default-features = getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3.4", default-features = false, features = ["std"] } hyper-rustls = { version = "0.27.7", features = ["http2", "ring", "webpki-tokio"] } hyper-util = { version = "0.1.19", features = ["full"] } -itertools = { version = "0.10.5" } +itertools-5ef9efb8ec2df382 = { package = "itertools", version = "0.12.1" } +itertools-93f6ce9d446188ac = { package = "itertools", version = "0.10.5" } miniz_oxide = { version = "0.8.5", default-features = false, features = ["with-alloc"] } mio = { version = "1.0.2", features = ["net", "os-ext"] } nom = { version = "7.1.3" }