mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-18 00:17:39 +01:00
fix: Clear node host agent link when agent is removed
When a host agent is deleted via the UI, the LinkedHostAgentID on any PVE nodes that were linked to it was not being cleared. This caused the "Agent" tag to persist in the UI after uninstalling the agent. Related to #920
This commit is contained in:
@@ -2029,6 +2029,25 @@ func (s *State) LinkNodeToHostAgent(nodeID, hostAgentID string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// UnlinkNodesFromHostAgent clears LinkedHostAgentID from all nodes linked to the given host agent.
|
||||
// This is called when a host agent is removed to clean up stale references.
|
||||
func (s *State) UnlinkNodesFromHostAgent(hostAgentID string) int {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
count := 0
|
||||
for i, node := range s.Nodes {
|
||||
if node.LinkedHostAgentID == hostAgentID {
|
||||
s.Nodes[i].LinkedHostAgentID = ""
|
||||
count++
|
||||
}
|
||||
}
|
||||
if count > 0 {
|
||||
s.LastUpdate = time.Now()
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
// UpsertCephCluster inserts or updates a Ceph cluster in the state.
|
||||
// Uses ID (typically the FSID) for matching.
|
||||
func (s *State) UpsertCephCluster(cluster CephCluster) {
|
||||
|
||||
@@ -1210,6 +1210,15 @@ func (m *Monitor) RemoveHostAgent(hostID string) (models.Host, error) {
|
||||
|
||||
m.state.RemoveConnectionHealth(hostConnectionPrefix + hostID)
|
||||
|
||||
// Clear LinkedHostAgentID from any nodes that were linked to this host agent
|
||||
unlinkedCount := m.state.UnlinkNodesFromHostAgent(hostID)
|
||||
if unlinkedCount > 0 {
|
||||
log.Info().
|
||||
Str("hostID", hostID).
|
||||
Int("unlinkedNodes", unlinkedCount).
|
||||
Msg("Cleared host agent links from PVE nodes")
|
||||
}
|
||||
|
||||
log.Info().
|
||||
Str("host", host.Hostname).
|
||||
Str("hostID", hostID).
|
||||
|
||||
Reference in New Issue
Block a user