Skip to content

Commit 416eaaf

Browse files
committed
openapi
1 parent 54b668b commit 416eaaf

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::{
@@ -4070,7 +4069,7 @@ pub trait NexusExternalApi {
40704069
async fn rack_membership_status(
40714070
rqctx: RequestContext<Self::Context>,
40724071
path_params: Path<params::RackMembershipConfigPathParams>,
4073-
query_params: Query<Option<RackMembershipVersion>>,
4072+
query_params: Query<params::RackMembershipVersionParam>,
40744073
) -> Result<HttpResponseOk<RackMembershipStatus>, HttpError>;
40754074

40764075
// Sleds

nexus/src/external_api/http_entrypoints.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7100,13 +7100,13 @@ impl NexusExternalApi for NexusExternalApiImpl {
71007100
async fn rack_membership_status(
71017101
rqctx: RequestContext<Self::Context>,
71027102
path_params: Path<params::RackMembershipConfigPathParams>,
7103-
query_params: Query<Option<shared::RackMembershipVersion>>,
7103+
query_params: Query<params::RackMembershipVersionParam>,
71047104
) -> Result<HttpResponseOk<RackMembershipStatus>, HttpError> {
71057105
let apictx = rqctx.context();
71067106
let nexus = &apictx.context.nexus;
71077107
let path_params = path_params.into_inner();
71087108
let rack_id = RackUuid::from_untyped_uuid(path_params.rack_id);
7109-
let version = query_params.into_inner();
7109+
let version = query_params.into_inner().version;
71107110
let handler = async {
71117111
let opctx =
71127112
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
@@ -3634,6 +3634,11 @@ pub struct ScimV2GroupPathParam {
36343634
pub group_id: String,
36353635
}
36363636

3637+
#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema)]
3638+
pub struct RackMembershipVersionParam {
3639+
pub version: Option<shared::RackMembershipVersion>,
3640+
}
3641+
36373642
#[cfg(test)]
36383643
mod tests {
36393644
use super::*;

openapi/nexus/nexus-2026011400.0.0-3b4dc6.json renamed to openapi/nexus/nexus-2026011400.0.0-131905.json

Lines changed: 40 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -7471,23 +7471,30 @@
74717471
}
74727472
}
74737473
},
7474-
"/v1/system/hardware/racks/{rack_id}/sleds": {
7474+
"/v1/system/hardware/racks/{rack_id}/membership": {
74757475
"get": {
74767476
"tags": [
74777477
"experimental"
74787478
],
7479-
"summary": "Retrieve the latest rack cluster membership change",
7480-
"operationId": "rack_membership_config_latest",
7479+
"summary": "Retrieve the rack cluster membership change for the given version or the",
7480+
"description": "latest version if no version is given",
7481+
"operationId": "rack_membership_status",
74817482
"parameters": [
74827483
{
74837484
"in": "path",
74847485
"name": "rack_id",
7485-
"description": "ID of the rack",
74867486
"required": true,
74877487
"schema": {
74887488
"type": "string",
74897489
"format": "uuid"
74907490
}
7491+
},
7492+
{
7493+
"in": "query",
7494+
"name": "version",
7495+
"schema": {
7496+
"$ref": "#/components/schemas/RackMembershipVersion"
7497+
}
74917498
}
74927499
],
74937500
"responses": {
@@ -7496,7 +7503,7 @@
74967503
"content": {
74977504
"application/json": {
74987505
"schema": {
7499-
"$ref": "#/components/schemas/RackMembershipChange"
7506+
"$ref": "#/components/schemas/RackMembershipStatus"
75007507
}
75017508
}
75027509
}
@@ -7508,12 +7515,14 @@
75087515
"$ref": "#/components/responses/Error"
75097516
}
75107517
}
7511-
},
7518+
}
7519+
},
7520+
"/v1/system/hardware/racks/{rack_id}/membership/add": {
75127521
"post": {
75137522
"tags": [
75147523
"experimental"
75157524
],
7516-
"summary": "Add new sleds to rack cluster",
7525+
"summary": "Add new sleds to rack membership",
75177526
"operationId": "rack_membership_add_sleds",
75187527
"parameters": [
75197528
{
@@ -7543,58 +7552,7 @@
75437552
"content": {
75447553
"application/json": {
75457554
"schema": {
7546-
"title": "uint64",
7547-
"type": "integer",
7548-
"format": "uint64",
7549-
"minimum": 0
7550-
}
7551-
}
7552-
}
7553-
},
7554-
"4XX": {
7555-
"$ref": "#/components/responses/Error"
7556-
},
7557-
"5XX": {
7558-
"$ref": "#/components/responses/Error"
7559-
}
7560-
}
7561-
}
7562-
},
7563-
"/v1/system/hardware/racks/{rack_id}/sleds/{epoch}": {
7564-
"get": {
7565-
"tags": [
7566-
"experimental"
7567-
],
7568-
"summary": "Retrieve the rack cluster membership change for the given epoch",
7569-
"operationId": "rack_membership_config",
7570-
"parameters": [
7571-
{
7572-
"in": "path",
7573-
"name": "epoch",
7574-
"required": true,
7575-
"schema": {
7576-
"type": "integer",
7577-
"format": "uint64",
7578-
"minimum": 0
7579-
}
7580-
},
7581-
{
7582-
"in": "path",
7583-
"name": "rack_id",
7584-
"required": true,
7585-
"schema": {
7586-
"type": "string",
7587-
"format": "uuid"
7588-
}
7589-
}
7590-
],
7591-
"responses": {
7592-
"200": {
7593-
"description": "successful operation",
7594-
"content": {
7595-
"application/json": {
7596-
"schema": {
7597-
"$ref": "#/components/schemas/RackMembershipChange"
7555+
"$ref": "#/components/schemas/RackMembershipStatus"
75987556
}
75997557
}
76007558
}
@@ -14154,7 +14112,7 @@
1415414112
"sled_ids": {
1415514113
"type": "array",
1415614114
"items": {
14157-
"$ref": "#/components/schemas/UninitializedSledId"
14115+
"$ref": "#/components/schemas/BaseboardId"
1415814116
},
1415914117
"uniqueItems": true
1416014118
}
@@ -24647,18 +24605,20 @@
2464724605
"time_modified"
2464824606
]
2464924607
},
24650-
"RackMembershipChange": {
24651-
"description": "Status of last membership change from adding or removinig sleds",
24608+
"RackMembershipChangeState": {
24609+
"type": "string",
24610+
"enum": [
24611+
"in_progress",
24612+
"committed",
24613+
"aborted"
24614+
]
24615+
},
24616+
"RackMembershipStatus": {
24617+
"description": "Status of the rack membership uniquely identified by the (rack_id, version) pair",
2465224618
"type": "object",
2465324619
"properties": {
24654-
"epoch": {
24655-
"description": "The generation / version of the configuration",
24656-
"type": "integer",
24657-
"format": "uint64",
24658-
"minimum": 0
24659-
},
2466024620
"members": {
24661-
"description": "All members of the rack cluster for this epoch",
24621+
"description": "All members of the rack for this epoch",
2466224622
"type": "array",
2466324623
"items": {
2466424624
"$ref": "#/components/schemas/BaseboardId"
@@ -24687,30 +24647,31 @@
2468724647
"format": "date-time"
2468824648
},
2468924649
"unacknowledged_members": {
24690-
"description": "All members which have not committed to the membership change",
24650+
"description": "All members that have not yet responded to learning about this membership version",
2469124651
"type": "array",
2469224652
"items": {
2469324653
"$ref": "#/components/schemas/BaseboardId"
2469424654
},
2469524655
"uniqueItems": true
24656+
},
24657+
"version": {
24658+
"$ref": "#/components/schemas/RackMembershipVersion"
2469624659
}
2469724660
},
2469824661
"required": [
24699-
"epoch",
2470024662
"members",
2470124663
"rack_id",
2470224664
"state",
2470324665
"time_created",
24704-
"unacknowledged_members"
24666+
"unacknowledged_members",
24667+
"version"
2470524668
]
2470624669
},
24707-
"RackMembershipChangeState": {
24708-
"type": "string",
24709-
"enum": [
24710-
"in_progress",
24711-
"committed",
24712-
"aborted"
24713-
]
24670+
"RackMembershipVersion": {
24671+
"description": "A unique, monotonically increasing number representing the set of active sleds in a rack at a given point in time.",
24672+
"type": "integer",
24673+
"format": "uint64",
24674+
"minimum": 0
2471424675
},
2471524676
"RackResultsPage": {
2471624677
"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-2026011400.0.0-3b4dc6.json
1+
nexus-2026011400.0.0-131905.json

0 commit comments

Comments
 (0)