Skip to content

Commit cdda0d6

Browse files
authored
[MGS] Implement component details endpoint (#2285)
1 parent 68f612c commit cdda0d6

File tree

8 files changed

+1508
-232
lines changed

8 files changed

+1508
-232
lines changed

Cargo.lock

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ fatfs = "0.3.6"
126126
fs-err = "2.9.0"
127127
futures = "0.3.25"
128128
gateway-client = { path = "gateway-client" }
129-
gateway-messages = { git = "https://github.com/oxidecomputer/management-gateway-service", rev = "2220180907345c4a0430503a30955aa38ce19a4a", default-features = false, features = ["std"] }
130-
gateway-sp-comms = { git = "https://github.com/oxidecomputer/management-gateway-service", rev = "2220180907345c4a0430503a30955aa38ce19a4a" }
129+
gateway-messages = { git = "https://github.com/oxidecomputer/management-gateway-service", rev = "a97fa5f1d19aa3062e0dfa433a5040161c5d9113", default-features = false, features = ["std"] }
130+
gateway-sp-comms = { git = "https://github.com/oxidecomputer/management-gateway-service", rev = "a97fa5f1d19aa3062e0dfa433a5040161c5d9113" }
131131
headers = "0.3.8"
132132
heck = "0.4"
133133
hex = "0.4.3"

gateway-cli/src/main.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -428,8 +428,14 @@ async fn main() -> Result<()> {
428428
client.sp_component_list(sp.type_, sp.slot).await?.into_inner();
429429
dumper.dump(&info)?;
430430
}
431-
Command::ComponentDetails { .. }
432-
| Command::ComponentClearStatus { .. } => {
431+
Command::ComponentDetails { sp, component } => {
432+
let info = client
433+
.sp_component_get(sp.type_, sp.slot, &component)
434+
.await?
435+
.into_inner();
436+
dumper.dump(&info)?;
437+
}
438+
Command::ComponentClearStatus { .. } => {
433439
todo!("missing MGS endpoint");
434440
}
435441
Command::UsartAttach {

gateway/src/http_entrypoints.rs

+14-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
//! HTTP entrypoint functions for the gateway service
88
9+
mod component_details;
910
mod conversions;
1011

12+
use self::component_details::SpComponentDetails;
1113
use self::conversions::component_from_str;
1214
use crate::error::SpCommsError;
1315
use crate::ServerContext;
@@ -605,10 +607,18 @@ async fn sp_component_list(
605607
path = "/sp/{type}/{slot}/component/{component}",
606608
}]
607609
async fn sp_component_get(
608-
_rqctx: RequestContext<Arc<ServerContext>>,
609-
_path: Path<PathSpComponent>,
610-
) -> Result<HttpResponseOk<SpComponentInfo>, HttpError> {
611-
todo!()
610+
rqctx: RequestContext<Arc<ServerContext>>,
611+
path: Path<PathSpComponent>,
612+
) -> Result<HttpResponseOk<Vec<SpComponentDetails>>, HttpError> {
613+
let apictx = rqctx.context();
614+
let PathSpComponent { sp, component } = path.into_inner();
615+
let sp = apictx.mgmt_switch.sp(sp.into())?;
616+
let component = component_from_str(&component)?;
617+
618+
let details =
619+
sp.component_details(component).await.map_err(SpCommsError::from)?;
620+
621+
Ok(HttpResponseOk(details.entries.into_iter().map(Into::into).collect()))
612622
}
613623

614624
/// Get the currently-active slot for an SP component

0 commit comments

Comments
 (0)