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

rollandf / nvidia-k8s-ipam / 20137850297
54%
main: 53%

Build:
Build:
LAST BUILD BRANCH: go12411
DEFAULT BRANCH: main
Ran 11 Dec 2025 03:17PM UTC
Jobs 1
Files 46
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

11 Dec 2025 03:12PM UTC coverage: 54.092% (+0.01%) from 54.08%
20137850297

push

github

rollandf
feat: add perNodeExclusions support for IPPool and CIDRPool

Add support for per-node index-based IP exclusions in both IPPool and
CIDRPool resources. This allows administrators to exclude specific IP
address ranges based on their index position within each node's allocated
IP block or prefix, rather than by absolute IP addresses.

API Changes:
- Add ExcludeIndexRange type with startIndex and endIndex fields
- Add perNodeExclusions field to IPPoolSpec and CIDRPoolSpec
- Add kubebuilder validation markers for CRD-level validation
  - startIndex and endIndex must be non-negative
  - endIndex must be >= startIndex
- Add runtime validation functions:
  - validatePerNodeExclusions() for CIDRPool (validates against perNodeNetworkPrefix)
  - validatePerNodeExclusionsForBlockSize() for IPPool (validates against perNodeBlockSize)
- Add comprehensive test coverage (24 test cases total)
  - 14 tests for CIDRPool (IPv4 and IPv6)
  - 10 tests for IPPool (IPv4 and IPv6)

Controller Implementation:
- IPPool controller: Add buildPerNodeExclusions() function
  - Converts index-based exclusions to IP addresses for node's IP block
  - Merges with pool-wide exclusions before passing to allocator
  - 10 unit tests covering all edge cases
- CIDRPool controller: Add buildPerNodeExclusions() function
  - Converts index-based exclusions to IP addresses for node's prefix
  - Combines with filtered pool-wide exclusions
  - 7 unit tests covering all edge cases

Implementation details:
- Each node processes only its own allocation (per-node)
- Index-based ranges are converted to IP-based ExclusionRange objects
- Ranges are clamped to node's allocation boundaries
- Ranges outside node's allocation are skipped
- Reuses existing allocator exclusion mechanism (no allocator changes)
- Memory efficient: large ranges create single ExclusionRange entries

Documentation:
- Update README.md with perNodeExclusions field descriptions
- Update docs/static-ip.md with examples
- Add detailed fi... (continued)

125 of 155 new or added lines in 6 files covered. (80.65%)

70 existing lines in 6 files now uncovered.

2221 of 4106 relevant lines covered (54.09%)

9.04 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
4
89.47
0.09% pkg/ipam-node/controllers/cidrpool/cidrpool.go
6
34.18
0.0% pkg/ipam-node/controllers/ippool/ippool.go
20
0.0
0.0% api/v1alpha1/zz_generated.deepcopy.go

Uncovered Existing Lines

Lines Coverage ∆ File
1
89.47
0.09% pkg/ipam-node/controllers/cidrpool/cidrpool.go
4
93.44
0.0% api/v1alpha1/ippool_validate.go
5
83.33
0.0% pkg/pool/manager.go
10
34.18
0.0% pkg/ipam-node/controllers/ippool/ippool.go
15
85.65
0.0% api/v1alpha1/cidrpool_validate.go
35
0.0
0.0% api/v1alpha1/zz_generated.deepcopy.go
Jobs
ID Job ID Ran Files Coverage
1 20137850297.1 11 Dec 2025 03:17PM UTC 46
54.09
GitHub Action Run
Source Files on build 20137850297
  • Tree
  • List 46
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20137850297
  • 660df844 on github
  • Prev Build on pernodeexclusions (#20091619441)
  • Next Build on pernodeexclusions (#20166092903)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc