Skip to content

feat: admission validators for the capacity planners (OP-345) - #2746

Open
kristina-solovyova wants to merge 1 commit into
08-10-feat_support_full-drive_wekacluster_acting_as_a_daemonset_and_using_all_drives_op-345_from
08-17-feat_admission_validators_for_the_capacity_planners_op-345_
Open

feat: admission validators for the capacity planners (OP-345)#2746
kristina-solovyova wants to merge 1 commit into
08-10-feat_support_full-drive_wekacluster_acting_as_a_daemonset_and_using_all_drives_op-345_from
08-17-feat_admission_validators_for_the_capacity_planners_op-345_

Conversation

@kristina-solovyova

Copy link
Copy Markdown
Collaborator

Eleven new WekaCluster validators, so a spec that can never converge is reported at
apply time instead of after a failed formation.

Auto-full-drives (daemonset) specific:

  • cluster_auto_full_drives_pin_exceeds_node_drives — a numDrives (or unpinned-
    numDrives driveCores) pin above a node's signed full drive count.
  • cluster_auto_full_drives_compute_hugepages — compute hugepages scale with the
    claimed capacity and can exceed what any compute-eligible node has.
  • cluster_auto_full_drives_min_nodes — a role nodeSelector matching fewer nodes
    than the form-cluster floor.
  • cluster_sizing_mode_flip (update-only) — changing the derived sizing mode under
    a live cluster, except the two transitions the operator can carry over.

Shared across both planners:

  • cluster_min_containers, cluster_cores_per_container_limit,
    cluster_compute_drive_cores_floor, cluster_drive_cores_below_capacity,
    cluster_num_drives_below_required_cores, cluster_drives_unsigned_advisory,
    cluster_capacity_min_drive_containers.

cluster_signed_drives and cluster_min_drives_feasibility narrow to the modes they
still own, and cluster_drive_compute_core_ratio takes its ratio from
capacityPlannerConstraints instead of a hardcoded 1:2. Drive-role node listing is
shared via listDriveRoleNodes.

admission/defaults.go and the values.yaml policy documentation move with the
validators: evaluator_test.go checks registry and defaults for completeness in both
directions, so a defaults entry without its validator fails the build.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

kristina-solovyova commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more


How to use the Graphite Merge Queue

Add the label main-merge-queue to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@kristina-solovyova
kristina-solovyova force-pushed the 08-10-feat_support_full-drive_wekacluster_acting_as_a_daemonset_and_using_all_drives_op-345_ branch from 43d29a4 to 7234df5 Compare August 17, 2026 12:50
@kristina-solovyova
kristina-solovyova force-pushed the 08-17-feat_admission_validators_for_the_capacity_planners_op-345_ branch from 9851d4d to 587476a Compare August 17, 2026 12:50
@kristina-solovyova
kristina-solovyova force-pushed the 08-10-feat_support_full-drive_wekacluster_acting_as_a_daemonset_and_using_all_drives_op-345_ branch from 7234df5 to 15b562d Compare August 17, 2026 14:14
@kristina-solovyova
kristina-solovyova force-pushed the 08-17-feat_admission_validators_for_the_capacity_planners_op-345_ branch 2 times, most recently from 1da7dc0 to e421aff Compare August 17, 2026 14:28
@kristina-solovyova
kristina-solovyova force-pushed the 08-10-feat_support_full-drive_wekacluster_acting_as_a_daemonset_and_using_all_drives_op-345_ branch 2 times, most recently from 20a7c59 to 3065398 Compare August 19, 2026 13:50
@kristina-solovyova
kristina-solovyova force-pushed the 08-17-feat_admission_validators_for_the_capacity_planners_op-345_ branch 2 times, most recently from 03d7933 to 950417b Compare August 19, 2026 15:28
@kristina-solovyova
kristina-solovyova force-pushed the 08-10-feat_support_full-drive_wekacluster_acting_as_a_daemonset_and_using_all_drives_op-345_ branch from 3065398 to 7c618ed Compare August 19, 2026 15:28
@kristina-solovyova
kristina-solovyova marked this pull request as ready for review August 19, 2026 15:29
@kristina-solovyova
kristina-solovyova requested a review from a team as a code owner August 19, 2026 15:29
@graphite-app
graphite-app Bot requested review from assafgi and tigrawap August 19, 2026 15:29
@graphite-app

graphite-app Bot commented Aug 19, 2026

Copy link
Copy Markdown

Graphite Automations

"Add anton/matt/sergey/kristina as reviwers on operator PRs" took an action on this PR • (08/19/26)

2 reviewers were added to this PR based on Anton Bykov's automation.

Eleven new WekaCluster validators, so a spec that can never converge is reported at
apply time instead of after a failed formation.

Auto-full-drives (daemonset) specific:
- cluster_auto_full_drives_pin_exceeds_node_drives — a numDrives (or unpinned-
  numDrives driveCores) pin above a node's signed full drive count.
- cluster_auto_full_drives_compute_hugepages — compute hugepages scale with the
  claimed capacity and can exceed what any compute-eligible node has.
- cluster_auto_full_drives_min_nodes — a role nodeSelector matching fewer nodes
  than the form-cluster floor.
- cluster_sizing_mode_flip (update-only) — changing the derived sizing mode under
  a live cluster, except the two transitions the operator can carry over.

Shared across both planners:
- cluster_min_containers, cluster_cores_per_container_limit,
  cluster_compute_drive_cores_floor, cluster_drive_cores_below_capacity,
  cluster_num_drives_below_required_cores, cluster_drives_unsigned_advisory,
  cluster_capacity_min_drive_containers.

cluster_signed_drives and cluster_min_drives_feasibility narrow to the modes they
still own, and cluster_drive_compute_core_ratio takes its ratio from
capacityPlannerConstraints instead of a hardcoded 1:2. Drive-role node listing is
shared via listDriveRoleNodes.

admission/defaults.go and the values.yaml policy documentation move with the
validators: evaluator_test.go checks registry and defaults for completeness in both
directions, so a defaults entry without its validator fails the build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants