set_status: consolidate whoami into get_agent_meta with optional name

This commit is contained in:
damocles 2026-05-23 10:57:27 +02:00 committed by Mara
parent 77fdaf0d1e
commit 73871f18c3
10 changed files with 118 additions and 204 deletions

View file

@ -220,16 +220,6 @@ async fn dispatch(req: &AgentRequest, agent: &str, coord: &Arc<Coordinator>) ->
},
}
}
AgentRequest::Whoami => {
let (status_text, status_set_at) = crate::container_view::read_agent_status(agent);
AgentResponse::Whoami {
name: agent.to_owned(),
role: "agent".to_owned(),
hyperhive_rev: crate::auto_update::current_flake_rev(&coord.hyperhive_flake),
status_text,
status_set_at,
}
}
AgentRequest::SetStatus { text } => {
let path = crate::coordinator::Coordinator::agent_notes_dir(agent)
.join("hyperhive-status");
@ -255,10 +245,19 @@ async fn dispatch(req: &AgentRequest, agent: &str, coord: &Arc<Coordinator>) ->
}
}
AgentRequest::GetAgentMeta { name } => {
let target = name.as_deref().unwrap_or(agent);
let (status_text, status_set_at) =
crate::container_view::read_agent_status(name);
crate::container_view::read_agent_status(target);
let role = if target == hive_sh4re::MANAGER_AGENT {
"manager"
} else {
"agent"
}
.to_owned();
AgentResponse::AgentMeta {
name: name.clone(),
name: target.to_owned(),
role,
hyperhive_rev: crate::auto_update::current_flake_rev(&coord.hyperhive_flake),
status_text,
status_set_at,
}

View file

@ -187,7 +187,7 @@ fn is_rate_limited(name: &str) -> bool {
/// Read the agent's free-text status and the Unix timestamp when it was last set
/// (derived from the file's mtime). Returns `(None, None)` when the file is absent
/// or empty. `pub` so `agent_server` and `manager_server` can populate `Whoami`.
/// or empty. `pub` so `agent_server` and `manager_server` can populate `AgentMeta`.
pub fn read_agent_status(name: &str) -> (Option<String>, Option<i64>) {
let path = Coordinator::agent_notes_dir(name).join("hyperhive-status");
let meta = std::fs::metadata(&path).ok();

View file

@ -480,17 +480,6 @@ async fn dispatch(req: &ManagerRequest, coord: &Arc<Coordinator>) -> ManagerResp
},
}
}
ManagerRequest::Whoami => {
let (status_text, status_set_at) =
crate::container_view::read_agent_status(MANAGER_AGENT);
ManagerResponse::Whoami {
name: MANAGER_AGENT.to_owned(),
role: "manager".to_owned(),
hyperhive_rev: crate::auto_update::current_flake_rev(&coord.hyperhive_flake),
status_text,
status_set_at,
}
}
ManagerRequest::SetStatus { text } => {
let path = Coordinator::agent_notes_dir(MANAGER_AGENT).join("hyperhive-status");
let result = if text.trim().is_empty() {
@ -513,10 +502,14 @@ async fn dispatch(req: &ManagerRequest, coord: &Arc<Coordinator>) -> ManagerResp
}
}
ManagerRequest::GetAgentMeta { name } => {
let target = name.as_deref().unwrap_or(MANAGER_AGENT);
let (status_text, status_set_at) =
crate::container_view::read_agent_status(name);
crate::container_view::read_agent_status(target);
let role = if target == MANAGER_AGENT { "manager" } else { "agent" }.to_owned();
ManagerResponse::AgentMeta {
name: name.clone(),
name: target.to_owned(),
role,
hyperhive_rev: crate::auto_update::current_flake_rev(&coord.hyperhive_flake),
status_text,
status_set_at,
}