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

oracle / karpenter-provider-oci / 29403216814
80%

Build:
DEFAULT BRANCH: main
Ran 15 Jul 2026 09:08AM UTC
Jobs 1
Files 61
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

15 Jul 2026 09:05AM UTC coverage: 78.616% (+0.3%) from 78.269%
29403216814

push

github

web-flow
fix: handle cases where OCI is out of capacity (#34)

When a NodePool runs out of host capacity, OCI Karpenter previously returned a
generic CloudProvider.CreateError from Create. Core Karpenter only deletes and
reschedules a NodeClaim on an InsufficientCapacityError, so on a CreateError the
NodeClaim stayed pinned to the exhausted NodePool/offering and retried in a tight
loop, producing retry storms and 429 throttling with no fallback to other
capacity types or NodePools.

This change makes host-capacity exhaustion behave correctly:

- Classify pool-wide exhaustion as insufficient capacity: when every launch
  attempt is exhausted and at least one failed with an out-of-host-capacity (or
  service-limit/quota) error, CloudProvider.Create returns
  cloudprovider.NewInsufficientCapacityError so core Karpenter deletes and
  reschedules the NodeClaim, enabling cross-NodePool fallback.
- Add a TTL-based unavailable-offerings cache
  (pkg/cache/unavailableofferings.go) keyed by shape, CPU/memory config, zone and
  capacity type. LaunchInstance marks offerings unavailable on capacity/limit
  errors and the instance-type provider gates offering availability, driving
  spot->on-demand and cross-NodePool fallback. TTL is configurable via
  --unavailable-offerings-ttl-seconds (default 180s).
- Treat an HTTP 500 "Out of host capacity" error as non-retryable at the SDK
  layer so the capacity-fallback logic handles it instead of the SDK amplifying
  the shortage.

Fixes #33 #51

Signed-off-by: Aniek Gul <13356402+aniekgul@users.noreply.github.com>

153 of 168 new or added lines in 8 files covered. (91.07%)

12 existing lines in 2 files now uncovered.

4908 of 6243 relevant lines covered (78.62%)

0.9 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
87.78
-9.05% pkg/oci/errors.go
4
90.84
-0.23% pkg/providers/instance/provider.go
2
79.23
0.37% pkg/providers/instancetype/provider.go

Coverage Regressions

Lines Coverage ∆ File
10
69.26
-0.05% pkg/cloudprovider/cloud_provider.go
2
83.33
-8.33% pkg/utils/refresher.go
Jobs
ID Job ID Ran Files Coverage
1 29403216814.1 15 Jul 2026 09:08AM UTC 61
78.62
GitHub Action Run
Source Files on build 29403216814
  • Tree
  • List 61
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 76a1d732 on github
  • Prev Build on main (#28813461661)
  • Next Build on main (#29505982684)
  • 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