feat: rollout

This commit is contained in:
2025-10-21 21:02:28 +02:00
parent 9435af0137
commit 9c86e215fe
5 changed files with 883 additions and 7 deletions

14
docs/Rollout.md Normal file
View File

@@ -0,0 +1,14 @@
# Rollout
The rollout feature works together with the spore-registry.
It provides an endpoint `/cluster/node/versions` to determin which version are installed on which nodes through the `version` label.
A rollout can be started by calling the `/rollout` endpoint and providing a set of labels.
The endpoint will then search the the corresponding firmware in the spore-registry and checks the cluster members that match the labels.
The gateway will then upload the firmware that was found to the matching cluster members in the background. Rollout and upload progress is sent through websocket.
Before the upload starts, the `version` label on the member node is updated with the firmware version from the registry.
The spore-ui provides a rollout button on each firmware version. When clicked, the existing drawer is shown with the Rollout panel.
The gateway is consulted (endpoint `/cluster/node/versions`) o return the list of matching members that are affected by the rollout and displayed inside the Rollout panel.
The button `Rollout` will, once clicked, trigger the `/rollout` endpoint with the label set of the selected firmware that needs to be rolled out.
Rollout and upload progress is received through websocket and the Rollout panel updated in realtime.
Any UI interaction is blocked during rollout and the UI behaves like the Firmware Deploy on the cluster view (also with backdrop and info message).