• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

NVIDIA / nodewright / 37527108213
83%

Build:
DEFAULT BRANCH: main
Ran 06 Oct 2026 08:51PM UTC
Jobs 1
Files 59
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Oct 2026 08:31PM UTC coverage: 83.016% (+0.06%) from 82.953%
37527108213

push

github

web-flow
fix(operator): do not take ownership of a cordon NodeWright did not create (#760)

Cordon() wrote the cordon_<name> ownership annotation whenever it was
missing, even on a node that was already unschedulable. A cordon placed by
another controller was therefore recorded as NodeWright's, and when the
package completed Uncordon() cleared spec.unschedulable. With NVSentinel on
GKE COS this released nodes mid health check: NVSentinel cordons and
reboots, REAPPLY_ON_REBOOT reruns the tuning package, its service interrupt
claims the cordon, and completion uncordons a node that may still be
unhealthy.

Cordon() now leaves a node alone when it is unschedulable and no NodeWright
holds a cordon on it (no cordon_* key, no runtimeRequiredCordon), and
returns false since that cordon is already durable in the API, so the drain
starts in the same pass. A node where another NodeWright holds a cordon is
handled as before, and if the external cordon is lifted mid-run the next
Cordon() cordons the node itself and owns it.

The reboot Reset() no longer deletes cordon_<name>. Its only caller is
TrackReboots, and a NodeWright's own reboot interrupt changes the boot ID
while the node is still cordoned; dropping the annotation there would leave
a cordon no NodeWright holds, which Cordon() now refuses to take, stranding
the node. The TrackReboots envtest spec asserted the annotation was
cleared; it now asserts it survives.

The CLI reset commands had the same problem: they strip cordon_<name>
without uncordoning, and the documented drain-timeout recovery relies on
the re-run releasing the cordon. `reset` and `node reset` now keep the
annotation on nodes the NodeWright still selects, matching its
nodeSelector the way the operator does, and remove it where no re-run
will come: the NodeWright is gone (the orphaned-cordon case) or no
longer selects the node. If the NodeWright cannot be read the
annotation is kept with a warning. A node whose only remaining metadata is a kept
cordo... (continued)

50 of 53 new or added lines in 4 files covered. (94.34%)

13 existing lines in 2 files now uncovered.

9893 of 11917 relevant lines covered (83.02%)

7.57 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
78.65
-1.41% operator/internal/cli/utils/utils.go

Coverage Regressions

Lines Coverage ∆ File
8
78.65
-1.41% operator/internal/cli/utils/utils.go
5
78.34
-3.18% operator/cmd/cli/app/lifecycle.go
Jobs
ID Job ID Ran Files Coverage
1 37527108213.1 06 Oct 2026 08:51PM UTC 59
83.02
GitHub Action Run
Source Files on build 37527108213
  • Tree
  • List 59
  • Changed 6
  • Source Changed 4
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37527108213
  • 4f22562e on github
  • Prev Build on main (#37505183488)
  • Next Build on main (#37529702502)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc