Skip to content

Implement rollout halting and degraded node surfacing#96

Open
jlebon wants to merge 4 commits into
bootc-dev:mainfrom
jlebon:pr/more-3b
Open

Implement rollout halting and degraded node surfacing#96
jlebon wants to merge 4 commits into
bootc-dev:mainfrom
jlebon:pr/more-3b

Conversation

@jlebon

@jlebon jlebon commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Various patches that add more error-handling as described in the 3b implementation plan.

jlebon added 4 commits July 8, 2026 13:14
When a daemon reports Degraded=True on a BootcNode, the controller now
sets the pool's Degraded condition with reason NodeDegraded and a message
listing the affected node names.

Assisted-by: Pi (Claude Opus 4.6)
Signed-off-by: Jonathan Lebon <jonathan@jlebon.com>
Add a new Degraded condition reason for when the controller stops
assigning reboot slots because 2 or more nodes in reboot slots are
unhealthy (Degraded or not Ready after rebooting into the target
image).

No behavioral changes yet; the constant is wired up in a follow-up
commit.

Assisted-by: Pi (Claude Opus 4.6)
Signed-off-by: Jonathan Lebon <jonathan@jlebon.com>
When 2 or more nodes occupying reboot slots are unhealthy (BootcNode
Degraded after booting the target digest, or K8s Node not Ready after
update), the controller stops assigning new reboot slots and sets the
pool Degraded with reason RolloutHalted. A single unhealthy node
might be a hardware issue, but two suggest a bad image.

The rollout resumes automatically once the unhealthy count drops
below the threshold (e.g. nodes recover or are manually fixed).

Assisted-by: Pi (Claude Opus 4.6)
Signed-off-by: Jonathan Lebon <jonathan@jlebon.com>
The controller concurrently patches spec.unschedulable on the same
Node, which bumps the resourceVersion. A Status().Update fails in
that case because it checks the top-level resourceVersion. Switch
to Status().Patch which avoids the conflict entirely.

Assisted-by: Pi (Claude Opus 4.6)
Signed-off-by: Jonathan Lebon <jonathan@jlebon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant