Files
pulse/internal/models
rcourtman c6364dd453 Collapse dual-source Ceph pools to one alert identity
Fixes #1341 (reopened)

When the same Ceph cluster is reported by both the Proxmox API poller
(instance "pve5") and a Pulse host-agent (instance "agent:pve5"), it
landed in state twice under two pool-ID namespaces
("pve5-ceph-pool-X" vs "agent:pve5-ceph-pool-X"). The frontend collapsed
them via an FSID dedup whose winner was chosen by a fluctuating
completeness score, but alert evaluation ran on the raw, un-deduped list
(and ce1607694 added a third check on the raw agent cluster). So:

  - the threshold UI row identity flipped between the two pool IDs as the
    dedup winner oscillated, making a saved per-pool override appear to
    revert between the custom value and the storage default; and
  - both pool IDs were alert-checked under independent lifecycles,
    producing duplicate, flapping active alerts.

Make alert evaluation and the frontend consume the same deterministic
FSID-deduplicated Ceph view (DedupeCephClusters), preferring the
authoritative non-agent identity so a pool has exactly one ID. Route the
agent-report and mock alert paths through GetDedupedCephClusters, and
honor the legacy "agent:"-prefixed override key for the surviving pool so
existing thresholds keep firing without manual re-entry. Retires the
ce1607694 agent-only check path.
2026-06-02 11:28:28 +01:00
..