Skip to content

Commit 2f873e2

Browse files
committed
openapi
1 parent 7742597 commit 2f873e2

File tree

6 files changed

+51
-87
lines changed

6 files changed

+51
-87
lines changed

nexus/external-api/output/nexus_tags.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,8 @@ probe_create POST /experimental/v1/probes
5959
probe_delete DELETE /experimental/v1/probes/{probe}
6060
probe_list GET /experimental/v1/probes
6161
probe_view GET /experimental/v1/probes/{probe}
62-
rack_membership_add_sleds POST /v1/system/hardware/racks/{rack_id}/sleds
63-
rack_membership_config GET /v1/system/hardware/racks/{rack_id}/sleds/{epoch}
64-
rack_membership_config_latest GET /v1/system/hardware/racks/{rack_id}/sleds
62+
rack_membership_add_sleds POST /v1/system/hardware/racks/{rack_id}/membership/add
63+
rack_membership_status GET /v1/system/hardware/racks/{rack_id}/membership
6564
support_bundle_create POST /experimental/v1/system/support-bundles
6665
support_bundle_delete DELETE /experimental/v1/system/support-bundles/{bundle_id}
6766
support_bundle_download GET /experimental/v1/system/support-bundles/{bundle_id}/download

nexus/external-api/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use dropshot::{
1717
use dropshot_api_manager_types::{ValidationContext, api_versions};
1818
use http::Response;
1919
use ipnetwork::IpNetwork;
20-
use nexus_types::external_api::shared::RackMembershipVersion;
2120
use nexus_types::{
2221
authn::cookies::Cookies,
2322
external_api::{
@@ -4388,7 +4387,7 @@ pub trait NexusExternalApi {
43884387
async fn rack_membership_status(
43894388
rqctx: RequestContext<Self::Context>,
43904389
path_params: Path<params::RackMembershipConfigPathParams>,
4391-
query_params: Query<Option<RackMembershipVersion>>,
4390+
query_params: Query<params::RackMembershipVersionParam>,
43924391
) -> Result<HttpResponseOk<RackMembershipStatus>, HttpError>;
43934392

43944393
// Sleds

nexus/src/external_api/http_entrypoints.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6226,13 +6226,13 @@ impl NexusExternalApi for NexusExternalApiImpl {
62266226
async fn rack_membership_status(
62276227
rqctx: RequestContext<Self::Context>,
62286228
path_params: Path<params::RackMembershipConfigPathParams>,
6229-
query_params: Query<Option<shared::RackMembershipVersion>>,
6229+
query_params: Query<params::RackMembershipVersionParam>,
62306230
) -> Result<HttpResponseOk<RackMembershipStatus>, HttpError> {
62316231
let apictx = rqctx.context();
62326232
let nexus = &apictx.context.nexus;
62336233
let path_params = path_params.into_inner();
62346234
let rack_id = RackUuid::from_untyped_uuid(path_params.rack_id);
6235-
let version = query_params.into_inner();
6235+
let version = query_params.into_inner().version;
62366236
let handler = async {
62376237
let opctx =
62386238
crate::context::op_context_for_external_api(&rqctx).await?;

nexus/types/src/external_api/params.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3795,6 +3795,11 @@ pub struct ScimV2GroupPathParam {
37953795
pub group_id: String,
37963796
}
37973797

3798+
#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema)]
3799+
pub struct RackMembershipVersionParam {
3800+
pub version: Option<shared::RackMembershipVersion>,
3801+
}
3802+
37983803
#[cfg(test)]
37993804
mod tests {
38003805
use super::*;

openapi/nexus/nexus-2026012100.0.0-1aef62.json renamed to openapi/nexus/nexus-2026012100.0.0-0aad96.json

Lines changed: 40 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -7827,23 +7827,30 @@
78277827
}
78287828
}
78297829
},
7830-
"/v1/system/hardware/racks/{rack_id}/sleds": {
7830+
"/v1/system/hardware/racks/{rack_id}/membership": {
78317831
"get": {
78327832
"tags": [
78337833
"experimental"
78347834
],
7835-
"summary": "Retrieve the latest rack cluster membership change",
7836-
"operationId": "rack_membership_config_latest",
7835+
"summary": "Retrieve the rack cluster membership change for the given version or the",
7836+
"description": "latest version if no version is given",
7837+
"operationId": "rack_membership_status",
78377838
"parameters": [
78387839
{
78397840
"in": "path",
78407841
"name": "rack_id",
7841-
"description": "ID of the rack",
78427842
"required": true,
78437843
"schema": {
78447844
"type": "string",
78457845
"format": "uuid"
78467846
}
7847+
},
7848+
{
7849+
"in": "query",
7850+
"name": "version",
7851+
"schema": {
7852+
"$ref": "#/components/schemas/RackMembershipVersion"
7853+
}
78477854
}
78487855
],
78497856
"responses": {
@@ -7852,7 +7859,7 @@
78527859
"content": {
78537860
"application/json": {
78547861
"schema": {
7855-
"$ref": "#/components/schemas/RackMembershipChange"
7862+
"$ref": "#/components/schemas/RackMembershipStatus"
78567863
}
78577864
}
78587865
}
@@ -7864,12 +7871,14 @@
78647871
"$ref": "#/components/responses/Error"
78657872
}
78667873
}
7867-
},
7874+
}
7875+
},
7876+
"/v1/system/hardware/racks/{rack_id}/membership/add": {
78687877
"post": {
78697878
"tags": [
78707879
"experimental"
78717880
],
7872-
"summary": "Add new sleds to rack cluster",
7881+
"summary": "Add new sleds to rack membership",
78737882
"operationId": "rack_membership_add_sleds",
78747883
"parameters": [
78757884
{
@@ -7899,58 +7908,7 @@
78997908
"content": {
79007909
"application/json": {
79017910
"schema": {
7902-
"title": "uint64",
7903-
"type": "integer",
7904-
"format": "uint64",
7905-
"minimum": 0
7906-
}
7907-
}
7908-
}
7909-
},
7910-
"4XX": {
7911-
"$ref": "#/components/responses/Error"
7912-
},
7913-
"5XX": {
7914-
"$ref": "#/components/responses/Error"
7915-
}
7916-
}
7917-
}
7918-
},
7919-
"/v1/system/hardware/racks/{rack_id}/sleds/{epoch}": {
7920-
"get": {
7921-
"tags": [
7922-
"experimental"
7923-
],
7924-
"summary": "Retrieve the rack cluster membership change for the given epoch",
7925-
"operationId": "rack_membership_config",
7926-
"parameters": [
7927-
{
7928-
"in": "path",
7929-
"name": "epoch",
7930-
"required": true,
7931-
"schema": {
7932-
"type": "integer",
7933-
"format": "uint64",
7934-
"minimum": 0
7935-
}
7936-
},
7937-
{
7938-
"in": "path",
7939-
"name": "rack_id",
7940-
"required": true,
7941-
"schema": {
7942-
"type": "string",
7943-
"format": "uuid"
7944-
}
7945-
}
7946-
],
7947-
"responses": {
7948-
"200": {
7949-
"description": "successful operation",
7950-
"content": {
7951-
"application/json": {
7952-
"schema": {
7953-
"$ref": "#/components/schemas/RackMembershipChange"
7911+
"$ref": "#/components/schemas/RackMembershipStatus"
79547912
}
79557913
}
79567914
}
@@ -15121,7 +15079,7 @@
1512115079
"sled_ids": {
1512215080
"type": "array",
1512315081
"items": {
15124-
"$ref": "#/components/schemas/UninitializedSledId"
15082+
"$ref": "#/components/schemas/BaseboardId"
1512515083
},
1512615084
"uniqueItems": true
1512715085
}
@@ -25876,18 +25834,20 @@
2587625834
"time_modified"
2587725835
]
2587825836
},
25879-
"RackMembershipChange": {
25880-
"description": "Status of last membership change from adding or removinig sleds",
25837+
"RackMembershipChangeState": {
25838+
"type": "string",
25839+
"enum": [
25840+
"in_progress",
25841+
"committed",
25842+
"aborted"
25843+
]
25844+
},
25845+
"RackMembershipStatus": {
25846+
"description": "Status of the rack membership uniquely identified by the (rack_id, version) pair",
2588125847
"type": "object",
2588225848
"properties": {
25883-
"epoch": {
25884-
"description": "The generation / version of the configuration",
25885-
"type": "integer",
25886-
"format": "uint64",
25887-
"minimum": 0
25888-
},
2588925849
"members": {
25890-
"description": "All members of the rack cluster for this epoch",
25850+
"description": "All members of the rack for this epoch",
2589125851
"type": "array",
2589225852
"items": {
2589325853
"$ref": "#/components/schemas/BaseboardId"
@@ -25916,30 +25876,31 @@
2591625876
"format": "date-time"
2591725877
},
2591825878
"unacknowledged_members": {
25919-
"description": "All members which have not committed to the membership change",
25879+
"description": "All members that have not yet responded to learning about this membership version",
2592025880
"type": "array",
2592125881
"items": {
2592225882
"$ref": "#/components/schemas/BaseboardId"
2592325883
},
2592425884
"uniqueItems": true
25885+
},
25886+
"version": {
25887+
"$ref": "#/components/schemas/RackMembershipVersion"
2592525888
}
2592625889
},
2592725890
"required": [
25928-
"epoch",
2592925891
"members",
2593025892
"rack_id",
2593125893
"state",
2593225894
"time_created",
25933-
"unacknowledged_members"
25895+
"unacknowledged_members",
25896+
"version"
2593425897
]
2593525898
},
25936-
"RackMembershipChangeState": {
25937-
"type": "string",
25938-
"enum": [
25939-
"in_progress",
25940-
"committed",
25941-
"aborted"
25942-
]
25899+
"RackMembershipVersion": {
25900+
"description": "A unique, monotonically increasing number representing the set of active sleds in a rack at a given point in time.",
25901+
"type": "integer",
25902+
"format": "uint64",
25903+
"minimum": 0
2594325904
},
2594425905
"RackResultsPage": {
2594525906
"description": "A single page of results",

openapi/nexus/nexus-latest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
nexus-2026012100.0.0-1aef62.json
1+
nexus-2026012100.0.0-0aad96.json

0 commit comments

Comments
 (0)