Title: Node remains stuck as “Updating” in sidebar after successful host update/reboot
Summary
After running a Proxmox node update from PegaProx with reboot enabled, the update completes successfully and the node comes back online, but the left sidebar continues to show the node as (Updating). The node detail page shows the host is online and up to date, but the sidebar state does not clear.
Environment
- PegaProx version:
<fill in exact version from UI>
- Proxmox VE: 9.2.3
- Update target: Proxmox node
- Update mode: node update with reboot enabled
- Cluster uses SSH key authentication for node maintenance/update actions
Observed behavior
- Put node into maintenance mode from PegaProx.
- Start node update with reboot enabled.
- PegaProx successfully evacuates the node.
- PegaProx runs the update.
- PegaProx reboots the node.
- PegaProx detects the node is back online.
- PegaProx exits maintenance mode.
- Logs show the update completed.
- Sidebar still shows the node as
(Updating).
The node page itself shows the host is online and has 0 updates, but the sidebar still shows the update state.
Relevant log excerpt
[SYNC] Starting update for node: proxmoxb (reboot: True, force: False)
Sending reboot command to proxmoxb (root=True)
Waiting for proxmoxb to come back online (timeout: 600s)...
[OK] proxmoxb is back online!
[HA] Running: ssh root@192.168.x.x 'ha-manager crm-command node-maintenance disable proxmoxb'
[MAINT] disabled native HA maintenance for proxmoxb
[OK] Exited maintenance mode for proxmoxb
[OK] Node update completed for proxmoxb
Expected behavior
Once the node update completes successfully, the sidebar should stop showing (Updating) automatically.
Actual behavior
The sidebar continues to show (Updating) even though:
- the node is back online
- maintenance mode has been exited
- the update logs show completion
- the node page shows
0 updates
Restarting the pegaprox.service clears the stale sidebar state, but that is not a reasonable operational workaround after every host update.
Likely cause
From local source inspection, the sidebar appears to calculate update state using membership in self.nodes_updating:
is_updating = node_name in self.nodes_updating
The update-start path adds the node:
self.nodes_updating[node_name] = task
The completion path logs:
self.logger.info(f"[OK] Node update completed for {node_name}")
but does not appear to remove the node from self.nodes_updating.
There is already a cleanup method:
def clear_update_status(self, node_name: str) -> bool:
with self.update_lock:
if node_name in self.nodes_updating:
task = self.nodes_updating[node_name]
if task.status in ['completed', 'failed']:
del self.nodes_updating[node_name]
return True
return False
So the task can complete, but the node can remain in self.nodes_updating, causing the sidebar to continue showing (Updating).
Suggested fix
On successful completion and failed completion, either:
- remove the node from
self.nodes_updating, or
- update the sidebar logic so
(Updating) only displays for active task states such as starting, updating, rebooting, or waiting_online.
The cleaner fix may be to remove the node from self.nodes_updating when the update reaches a terminal state, since the current sidebar logic treats dictionary membership as active update state.
Impact
This makes it look like a host update is still running even after it completed successfully. In production this is confusing and can cause admins to avoid continuing maintenance or to restart PegaProx unnecessarily.
Title: Node remains stuck as “Updating” in sidebar after successful host update/reboot
Summary
After running a Proxmox node update from PegaProx with reboot enabled, the update completes successfully and the node comes back online, but the left sidebar continues to show the node as
(Updating). The node detail page shows the host is online and up to date, but the sidebar state does not clear.Environment
<fill in exact version from UI>Observed behavior
(Updating).The node page itself shows the host is online and has
0 updates, but the sidebar still shows the update state.Relevant log excerpt
Expected behavior
Once the node update completes successfully, the sidebar should stop showing
(Updating)automatically.Actual behavior
The sidebar continues to show
(Updating)even though:0 updatesRestarting the
pegaprox.serviceclears the stale sidebar state, but that is not a reasonable operational workaround after every host update.Likely cause
From local source inspection, the sidebar appears to calculate update state using membership in
self.nodes_updating:The update-start path adds the node:
The completion path logs:
but does not appear to remove the node from
self.nodes_updating.There is already a cleanup method:
So the task can complete, but the node can remain in
self.nodes_updating, causing the sidebar to continue showing(Updating).Suggested fix
On successful completion and failed completion, either:
self.nodes_updating, or(Updating)only displays for active task states such asstarting,updating,rebooting, orwaiting_online.The cleaner fix may be to remove the node from
self.nodes_updatingwhen the update reaches a terminal state, since the current sidebar logic treats dictionary membership as active update state.Impact
This makes it look like a host update is still running even after it completed successfully. In production this is confusing and can cause admins to avoid continuing maintenance or to restart PegaProx unnecessarily.