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

kubernetes-sigs / lws / 30464365376
61%

Build:
DEFAULT BRANCH: main
Ran 29 Jul 2026 03:10PM UTC
Jobs 1
Files 28
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

29 Jul 2026 03:08PM UTC coverage: 58.679% (+1.0%) from 57.687%
30464365376

push

github

web-flow
feat(disaggregatedset): per-role autoscaling via DisaggregatedSetRoleScaler (#922)

* feat(disaggregatedset): per-role autoscaling via DisaggregatedSetRoleScaler

Adds KEP-849 alpha implementation of per-role external scaling for
DisaggregatedSet. A role opts in via scaling.mode: External; the DS
controller then auto-creates a DisaggregatedSetRoleScaler named
"<ds>-<role>" that exposes /scale for HPA, KEDA, or any /scale-aware
controller. Replicas flow: autoscaler → scaler.spec.replicas → LWS.

New CRD DisaggregatedSetRoleScaler with the /scale subresource, aggregate
status.selector across revisions, and controller ownerRef for GC. The
executor resolves per-role targets from the scaler map; a no-shrink guard
prevents the new-revision target from shrinking mid-rollout if HPA writes a
smaller value. Webhook warns on External + spec.replicas > 1 and rejects
External + spec.slices > 1 (alpha restriction).

* test(disaggregatedset): e2e regression guard for /scale on a fresh scaler

Adds test/e2e/disaggregatedset/hpa_test.go covering three invariants that
unit tests can't reach because they need a real apiserver in the loop:

  1. GET /scale on a freshly auto-created scaler must return 200. This is
     the regression guard for yankay/lws#15 — HPA reads /scale before its
     first write, and if the CRD scale handler errors because .spec.replicas
     is missing, HPA parks in AbleToScale=False / FailedGetScale forever.
  2. kubectl scale on the scaler propagates spec.replicas to the underlying
     LWS (guards controller wiring end-to-end).
  3. Deleting the parent DS garbage-collects the auto-created scaler via
     the controller ownerRef (fake client doesn't model GC).

Extends test/testutils/disaggregatedset/fixtures.Role with an External bool
that emits scaling.mode: External on the role.

Spec #1 currently fails on this branch as expected — spec.replicas is a
*int32 that stays nil on auto-created scalers, and the apiserver's scale
handler cannot extr... (continued)

190 of 240 new or added lines in 4 files covered. (79.17%)

114 existing lines in 3 files now uncovered.

2515 of 4286 relevant lines covered (58.68%)

45.67 hits per line

Uncovered Changes

Lines Coverage ∆ File
29
70.32
-5.56% pkg/controllers/disaggregatedset/disaggregatedset_controller.go
18
84.62
pkg/controllers/disaggregatedset/scaler_manager.go
3
86.01
0.71% pkg/controllers/disaggregatedset/executor.go

Coverage Regressions

Lines Coverage ∆ File
74
70.32
-5.56% pkg/controllers/disaggregatedset/disaggregatedset_controller.go
31
86.01
0.71% pkg/controllers/disaggregatedset/executor.go
9
90.85
1.46% pkg/webhooks/disaggregatedset/disaggregatedset_webhook.go
Jobs
ID Job ID Ran Files Coverage
1 30464365376.1 29 Jul 2026 03:10PM UTC 28
58.68
GitHub Action Run
Source Files on build 30464365376
  • Tree
  • List 28
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 03e24b07 on github
  • Prev Build on main (#30411722646)
  • Next Build on main (#30466163910)
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