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

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

Build:
Build:
LAST BUILD BRANCH: go12411
DEFAULT BRANCH: main
Ran 10 Dec 2025 08:05AM 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

10 Dec 2025 08:01AM UTC coverage: 54.227% (+0.2%) from 54.058%
20091513314

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)

124 of 154 new or added lines in 6 files covered. (80.52%)

62 existing lines in 6 files now uncovered.

2226 of 4105 relevant lines covered (54.23%)

9.04 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
4
89.38
0.0% 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.38
0.0% pkg/ipam-node/controllers/cidrpool/cidrpool.go
3
93.44
0.11% api/v1alpha1/ippool_validate.go
5
83.33
0.0% pkg/pool/manager.go
8
85.65
0.06% api/v1alpha1/cidrpool_validate.go
10
34.18
0.0% pkg/ipam-node/controllers/ippool/ippool.go
35
0.0
0.0% api/v1alpha1/zz_generated.deepcopy.go
Jobs
ID Job ID Ran Files Coverage
1 20091513314.1 10 Dec 2025 08:05AM UTC 46
54.23
GitHub Action Run
Source Files on build 20091513314
  • Tree
  • List 46
  • Changed 6
  • Source Changed 5
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20091513314
  • f9855a50 on github
  • Prev Build on pernodeexclusions (#20091254664)
  • Next Build on pernodeexclusions (#20091520402)
  • 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