cleanup(#1014): remove is_manager from ContainerView, add manager_name to StateSnapshot

This commit is contained in:
damocles 2026-06-03 16:24:13 +02:00 committed by mara
commit 6feab54882
3 changed files with 18 additions and 14 deletions

View file

@ -12,7 +12,7 @@ use rusqlite::Connection;
use serde::{Deserialize, Serialize};
use crate::coordinator::Coordinator;
use crate::lifecycle::{self, AGENT_PREFIX, MANAGER_NAME};
use crate::lifecycle::{self, AGENT_PREFIX};
/// An agent-declared extra navigation link surfaced on the dashboard card.
/// Written by the `hive-dashboard-links` NixOS oneshot into
@ -34,10 +34,6 @@ pub struct ContainerView {
/// not serialized to API responses since the dashboard no longer displays it.
#[serde(skip)]
pub container: String,
/// True when this is the manager agent. Informational — not used
/// to gate any server-side actions. Computed from `name ==
/// MANAGER_NAME` so it doesn't add new state.
pub is_manager: bool,
pub port: u16,
pub running: bool,
pub needs_update: bool,
@ -168,7 +164,6 @@ pub async fn build_all(coord: &Coordinator) -> Vec<ContainerView> {
(false, None, None, false, None, None)
};
out.push(ContainerView {
is_manager: logical == MANAGER_NAME,
port: lifecycle::agent_web_port(&logical),
running,
container: c.clone(),

View file

@ -173,6 +173,9 @@ struct StateSnapshot {
/// "apply everything you've buffered".
seq: u64,
hostname: String,
/// The logical name of the manager agent. Lets the dashboard identify
/// the manager container without a separate `is_manager` bool on each row.
manager_name: String,
manager_port: u16,
any_stale: bool,
containers: Vec<ContainerView>,
@ -446,6 +449,7 @@ async fn api_state(headers: HeaderMap, State(state): State<AppState>) -> axum::J
axum::Json(StateSnapshot {
seq,
hostname,
manager_name: MANAGER_NAME.to_owned(),
manager_port: lifecycle::agent_web_port(MANAGER_NAME),
any_stale,
containers,