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

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

Build:
Build:
LAST BUILD BRANCH: go12411
DEFAULT BRANCH: main
Ran 14 Dec 2025 11:54AM 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

14 Dec 2025 10:39AM UTC coverage: 54.166% (-0.06%) from 54.225%
20207532655

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)

134 of 166 new or added lines in 6 files covered. (80.72%)

70 existing lines in 6 files now uncovered.

2230 of 4117 relevant lines covered (54.17%)

9.15 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
98.11
-1.89% api/v1alpha1/validate_exclusions.go
4
89.47
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.47
0.0% 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 20207532655.1 14 Dec 2025 11:54AM UTC 46
54.17
GitHub Action Run
Source Files on build 20207532655
  • 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 #20207532655
  • 5c5450c9 on github
  • Prev 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