Skip to content

feat(validation-gen): add default validation ratcheting support #132236

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

yongruilin
Copy link
Contributor

@yongruilin yongruilin commented Jun 11, 2025

What type of PR is this?

/kind feature

What this PR does / why we need it:

This PR is part of Declarative Validation # ratcheting. It adds the default validation ratcheting support in the generated code.
It includes:

  • equivalence check before emit validators
  • ratcheting test cases

Which issue(s) this PR is related to:

Ref: kubernetes/enhancements#5073

Special notes for your reviewer:

The KEP update has merged: kubernetes/enhancements#5292
The change has been reviewed and merged in the dev repo jpbetz/validation-gen#55

Does this PR introduce a user-facing change?

The validation-gen code generator generates validation code that supports validation ratcheting.

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

- [KEP]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/5073-declarative-validation-with-validation-gen/README.md

@k8s-ci-robot k8s-ci-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. kind/feature Categorizes issue or PR as related to a new feature. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. needs-priority Indicates a PR lacks a `priority/foo` label and requires one. area/code-generation kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. sig/apps Categorizes an issue or PR as relevant to SIG Apps. labels Jun 11, 2025
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Jun 11, 2025
@github-project-automation github-project-automation bot moved this to Needs Triage in SIG Apps Jun 11, 2025
@yongruilin
Copy link
Contributor Author

/triage accepted
/cc @jpbetz @deads2k @thockin @aaron-prindle

@k8s-ci-robot k8s-ci-robot added triage/accepted Indicates an issue or PR is ready to be actively worked on. and removed needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Jun 11, 2025
@k8s-triage-robot
Copy link

This PR may require API review.

If so, when the changes are ready, complete the pre-review checklist and request an API review.

Status of requested reviews is tracked in the API Review project.

@yongruilin yongruilin force-pushed the master_vg_ratcheting-default branch from bb10a8e to 1619372 Compare June 11, 2025 23:43
@k8s-ci-robot k8s-ci-robot added area/kubelet sig/auth Categorizes an issue or PR as relevant to SIG Auth. sig/node Categorizes an issue or PR as relevant to SIG Node. labels Jun 11, 2025
yongruilin and others added 5 commits June 11, 2025 23:44
…nctions

This commit introduces a new utility package for the validation generator, encapsulating functions for type handling, including `GetMemberByJSON`, `IsNilableType`, `NativeType`, and `NonPointer`. The existing code has been refactored to utilize these new utility functions, improving code clarity and maintainability. Additionally, the previous unaliasing logic has been removed in favor of the new utility methods, streamlining type validation processes across the codebase.

Co-authored-by: Tim Hockin <[email protected]>
Emit equivalence check before emit validators when needed.
@yongruilin yongruilin force-pushed the master_vg_ratcheting-default branch from 1619372 to ac467d3 Compare June 11, 2025 23:44
@thockin
Copy link
Member

thockin commented Jun 12, 2025

Thanks!

/lgtm
/approve

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 12, 2025
@k8s-ci-robot
Copy link
Contributor

LGTM label has been added.

Git tree hash: 6030a46f021544138e37588445c3d05ec02f596a

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: thockin, yongruilin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 12, 2025
@k8s-ci-robot k8s-ci-robot merged commit 158fce1 into kubernetes:master Jun 12, 2025
14 checks passed
@k8s-ci-robot k8s-ci-robot added this to the v1.34 milestone Jun 12, 2025
@github-project-automation github-project-automation bot moved this from Needs Triage to Done in SIG Apps Jun 12, 2025
@github-project-automation github-project-automation bot moved this to Closed / Done in SIG Auth Jun 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. area/code-generation area/kubelet cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. lgtm "Looks good to me", indicates that a PR is ready to be merged. needs-priority Indicates a PR lacks a `priority/foo` label and requires one. release-note Denotes a PR that will be considered when it comes time to generate release notes. sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. sig/apps Categorizes an issue or PR as relevant to SIG Apps. sig/auth Categorizes an issue or PR as relevant to SIG Auth. sig/node Categorizes an issue or PR as relevant to SIG Node. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
Status: Done
Status: Closed / Done
Development

Successfully merging this pull request may close these issues.

4 participants