fix(#2377): extract handle_agent_status — drop clippy::too_many_lines allow
dispatch was 101 lines (1 over limit) due to the AgentStatus arm. Extract it to a dedicated handle_agent_status helper to bring dispatch under the 100-line lint limit without the allow attribute. Per mara review comment on PR #2379.
This commit is contained in:
parent
949fcf2f16
commit
ad0752822a
1 changed files with 19 additions and 17 deletions
|
|
@ -74,7 +74,6 @@ async fn handle(stream: UnixStream, coord: Arc<Coordinator>) -> Result<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::too_many_lines)]
|
|
||||||
async fn dispatch(req: &HostRequest, coord: Arc<Coordinator>) -> HostResponse {
|
async fn dispatch(req: &HostRequest, coord: Arc<Coordinator>) -> HostResponse {
|
||||||
let result: anyhow::Result<HostResponse> = async {
|
let result: anyhow::Result<HostResponse> = async {
|
||||||
Ok(match req {
|
Ok(match req {
|
||||||
|
|
@ -147,22 +146,7 @@ async fn dispatch(req: &HostRequest, coord: Arc<Coordinator>) -> HostResponse {
|
||||||
HostResponse::dags(dags)
|
HostResponse::dags(dags)
|
||||||
}
|
}
|
||||||
HostRequest::List => HostResponse::list(lifecycle::list().await?),
|
HostRequest::List => HostResponse::list(lifecycle::list().await?),
|
||||||
HostRequest::AgentStatus => {
|
HostRequest::AgentStatus => handle_agent_status(&coord).await,
|
||||||
let rows = crate::container_view::build_all(&coord)
|
|
||||||
.await
|
|
||||||
.into_iter()
|
|
||||||
.map(|v| hive_sh4re::AgentStatusRow {
|
|
||||||
name: v.name,
|
|
||||||
running: v.running,
|
|
||||||
needs_update: v.needs_update,
|
|
||||||
needs_login: v.needs_login,
|
|
||||||
deployed_sha: v.deployed_sha,
|
|
||||||
pending_reminders: v.pending_reminders,
|
|
||||||
parent: v.parent,
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
HostResponse::agent_statuses(rows)
|
|
||||||
}
|
|
||||||
// The hive domain + per-surface public URLs are injected into
|
// The hive domain + per-surface public URLs are injected into
|
||||||
// c0re's service env by hive-c0re.nix; surface them so the
|
// c0re's service env by hive-c0re.nix; surface them so the
|
||||||
// operator CLI can fill in this hive's own identity (the
|
// operator CLI can fill in this hive's own identity (the
|
||||||
|
|
@ -243,6 +227,24 @@ async fn handle_spawn(coord: &Arc<Coordinator>, name: &str) -> Result<HostRespon
|
||||||
Ok(HostResponse::success())
|
Ok(HostResponse::success())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Collect per-agent status rows for `hivectl status` and the dashboard.
|
||||||
|
async fn handle_agent_status(coord: &Arc<Coordinator>) -> HostResponse {
|
||||||
|
let rows = crate::container_view::build_all(coord)
|
||||||
|
.await
|
||||||
|
.into_iter()
|
||||||
|
.map(|v| hive_sh4re::AgentStatusRow {
|
||||||
|
name: v.name,
|
||||||
|
running: v.running,
|
||||||
|
needs_update: v.needs_update,
|
||||||
|
needs_login: v.needs_login,
|
||||||
|
deployed_sha: v.deployed_sha,
|
||||||
|
pending_reminders: v.pending_reminders,
|
||||||
|
parent: v.parent,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
HostResponse::agent_statuses(rows)
|
||||||
|
}
|
||||||
|
|
||||||
/// Single-agent queue verbs the admin socket exposes. Each submits the
|
/// Single-agent queue verbs the admin socket exposes. Each submits the
|
||||||
/// matching DAG (persisting the `wanted` intent, serializing on the
|
/// matching DAG (persisting the `wanted` intent, serializing on the
|
||||||
/// agent's lease, with the transient/crash-watch suppression the old
|
/// agent's lease, with the transient/crash-watch suppression the old
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue