Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: kubernetes/apiextensions-apiserver
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.27.5
Choose a base ref
...
head repository: kubernetes/apiextensions-apiserver
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.27.6
Choose a head ref
  • 7 commits
  • 45 files changed
  • 3 contributors

Commits on Aug 7, 2023

  1. Bump cel-go to v0.12.7

    Kubernetes-commit: aa13d77168bc262f42ba86fc4ea8a2cb9b8cbba4
    jpbetz authored and k8s-publishing-bot committed Aug 7, 2023

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    c839e63 View commit details
  2. Add test coverage of result size of string operations

    Kubernetes-commit: 5ad0eeb35db8eaf902e30431cf02e9e667745089
    jpbetz authored and k8s-publishing-bot committed Aug 7, 2023
    Copy the full SHA
    10ab073 View commit details

Commits on Aug 22, 2023

  1. Fix CEL cost handling of zero length replacement strings

    Kubernetes-commit: b0d3be5afd51315b637d7b6f0a8c7a660649f133
    jpbetz authored and k8s-publishing-bot committed Aug 22, 2023
    Copy the full SHA
    13422bc View commit details

Commits on Aug 25, 2023

  1. apiextensions-apiserver: generate applyconfigurations

    These were omitted on accident.
    
    Signed-off-by: Steve Kuznetsov <skuznets@redhat.com>
    
    Kubernetes-commit: 28ea3449727db62f7eb9ec20fdf46b1df30e5d13
    stevekuznetsov authored and k8s-publishing-bot committed Aug 25, 2023
    Copy the full SHA
    4d42e07 View commit details

Commits on Sep 7, 2023

  1. Merge pull request #119809 from jpbetz/fix-cost-1_27

    Manual cherry pick of #119800: Fixes CEL estimated cost to propagate result sizes correctly
    
    Kubernetes-commit: f473f0d7a8caa28cabe3d5cff209f68a15e8502a
    k8s-publishing-bot committed Sep 7, 2023
    Copy the full SHA
    704e536 View commit details
  2. Merge pull request #120357 from stevekuznetsov/automated-cherry-pick-…

    …of-#120177-kubernetes-release-1.27
    
    Automated cherry pick of #120177: apiextensions-apiserver: generate applyconfigurations
    
    Kubernetes-commit: 455dc8e31bdf3c9a0035e4964a7ff4c910551d24
    k8s-publishing-bot committed Sep 7, 2023
    Copy the full SHA
    9e61d2d View commit details

Commits on Sep 13, 2023

  1. Copy the full SHA
    6090d8e View commit details
Showing with 3,799 additions and 37 deletions.
  1. +15 −15 go.mod
  2. +16 −16 go.sum
  3. +1 −1 hack/update-codegen.sh
  4. +26 −0 pkg/apis/apiextensions/validation/validation_test.go
  5. +1 −0 pkg/apiserver/schema/cel/celcoststability_test.go
  6. +7 −5 pkg/apiserver/schema/cel/compilation_test.go
  7. +84 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go
  8. +52 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go
  9. +218 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go
  10. +80 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go
  11. +88 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go
  12. +93 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go
  13. +64 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go
  14. +107 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go
  15. +52 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go
  16. +57 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go
  17. +39 −0 pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go
  18. +48 −0 pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go
  19. +463 −0 pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go
  20. +66 −0 pkg/client/applyconfiguration/apiextensions/v1/servicereference.go
  21. +57 −0 pkg/client/applyconfiguration/apiextensions/v1/validationrule.go
  22. +59 −0 pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go
  23. +50 −0 pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go
  24. +84 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go
  25. +63 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go
  26. +218 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go
  27. +80 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go
  28. +88 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go
  29. +134 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go
  30. +64 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go
  31. +107 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go
  32. +52 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go
  33. +57 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go
  34. +39 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go
  35. +48 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go
  36. +463 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go
  37. +66 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go
  38. +57 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go
  39. +59 −0 pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go
  40. +62 −0 pkg/client/applyconfiguration/internal/internal.go
  41. +105 −0 pkg/client/applyconfiguration/utils.go
  42. +59 −0 pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go
  43. +46 −0 pkg/client/clientset/clientset/typed/apiextensions/v1/fake/fake_customresourcedefinition.go
  44. +59 −0 pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
  45. +46 −0 pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/fake_customresourcedefinition.go
30 changes: 15 additions & 15 deletions go.mod
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@ go 1.20
require (
github.com/emicklei/go-restful/v3 v3.9.0
github.com/gogo/protobuf v1.3.2
github.com/google/cel-go v0.12.6
github.com/google/cel-go v0.12.7
github.com/google/gnostic v0.5.7-v3refs
github.com/google/go-cmp v0.5.9
github.com/google/gofuzz v1.1.0
@@ -23,12 +23,12 @@ require (
google.golang.org/grpc v1.51.0
google.golang.org/protobuf v1.28.1
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.0.0-20230705181702-64b026215965
k8s.io/apimachinery v0.0.0-20230612171306-38152d47d786
k8s.io/apiserver v0.0.0-20230705192528-717afa68892a
k8s.io/client-go v0.0.0-20230705183358-8d8e2bc8c982
k8s.io/code-generator v0.0.0-20230705153058-ad209354fb6b
k8s.io/component-base v0.0.0-20230705190003-c964270bd046
k8s.io/api v0.27.6
k8s.io/apimachinery v0.27.6
k8s.io/apiserver v0.27.6
k8s.io/client-go v0.27.6
k8s.io/code-generator v0.27.6
k8s.io/component-base v0.27.6
k8s.io/klog/v2 v2.90.1
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f
k8s.io/utils v0.0.0-20230209194617-a36077c30491
@@ -120,16 +120,16 @@ require (
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect
k8s.io/kms v0.0.0-20230612180710-1a96b5630cc5 // indirect
k8s.io/kms v0.27.6 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect
)

replace (
k8s.io/api => k8s.io/api v0.0.0-20230705181702-64b026215965
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230612171306-38152d47d786
k8s.io/apiserver => k8s.io/apiserver v0.0.0-20230705192528-717afa68892a
k8s.io/client-go => k8s.io/client-go v0.0.0-20230705183358-8d8e2bc8c982
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20230705153058-ad209354fb6b
k8s.io/component-base => k8s.io/component-base v0.0.0-20230705190003-c964270bd046
k8s.io/kms => k8s.io/kms v0.0.0-20230612180710-1a96b5630cc5
k8s.io/api => k8s.io/api v0.27.6
k8s.io/apimachinery => k8s.io/apimachinery v0.27.6
k8s.io/apiserver => k8s.io/apiserver v0.27.6
k8s.io/client-go => k8s.io/client-go v0.27.6
k8s.io/code-generator => k8s.io/code-generator v0.27.6
k8s.io/component-base => k8s.io/component-base v0.27.6
k8s.io/kms => k8s.io/kms v0.27.6
)
32 changes: 16 additions & 16 deletions go.sum
Original file line number Diff line number Diff line change
@@ -179,8 +179,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=
github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M=
github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw=
github.com/google/cel-go v0.12.7 h1:jM6p55R0MKBg79hZjn1zs2OlrywZ1Vk00rxVvad1/O0=
github.com/google/cel-go v0.12.7/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw=
github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -745,25 +745,25 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.0.0-20230705181702-64b026215965 h1:Lv0yoxijsg4yBwh3PWCxNmYCqv0WKRXKpSd1NPbEbq8=
k8s.io/api v0.0.0-20230705181702-64b026215965/go.mod h1:9LsazkXf9OZf89wznhOAj2xkhSqSkAXtPjw1Q9i8oFI=
k8s.io/apimachinery v0.0.0-20230612171306-38152d47d786 h1:5apbbWoKi3ZjCSWm5UKfcNW2egne2ZbbG05tyUaKiKE=
k8s.io/apimachinery v0.0.0-20230612171306-38152d47d786/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
k8s.io/apiserver v0.0.0-20230705192528-717afa68892a h1:A67ly7zEYJGRoK/+3vSJVEiiokiOM9P9nJKFdWVWVYg=
k8s.io/apiserver v0.0.0-20230705192528-717afa68892a/go.mod h1:aYax67ypn6FEWzi19wdhoRJ83V9r8uxbJejvVNKPfSg=
k8s.io/client-go v0.0.0-20230705183358-8d8e2bc8c982 h1:d+jZBdBd2n2D7k/8+fizAqZXHBtCtWYXvtrAXQTNWUI=
k8s.io/client-go v0.0.0-20230705183358-8d8e2bc8c982/go.mod h1:BuW1PoLqaULdxqGIXqc77od21c39c6Cxe+rm9KhNnvc=
k8s.io/code-generator v0.0.0-20230705153058-ad209354fb6b h1:qkktfKuIGwTpHaqgGQH61LPgmHpJYCfvY5KuXJ8VFjU=
k8s.io/code-generator v0.0.0-20230705153058-ad209354fb6b/go.mod h1:DPung1sI5vBgn4AGKtlPRQAyagj/ir/4jI55ipZHVww=
k8s.io/component-base v0.0.0-20230705190003-c964270bd046 h1:OBVR0/Wl6AP93SGN8cOtRJFmyHztwGU0rn6Cfj35p2c=
k8s.io/component-base v0.0.0-20230705190003-c964270bd046/go.mod h1:iTsyaqmcZA6Cwc2WL21dLc0H8cCZZzwbklTzDQzuqvU=
k8s.io/api v0.27.6 h1:PBWu/lywJe2qQcshMjubzcBg7+XDZOo7O8JJAWuYtUo=
k8s.io/api v0.27.6/go.mod h1:AQYj0UsFCp3qJE7bOVnUuy4orCsXVkvHefnbYQiNWgk=
k8s.io/apimachinery v0.27.6 h1:mGU8jmBq5o8mWBov+mLjdTBcU+etTE19waies4AQ6NE=
k8s.io/apimachinery v0.27.6/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
k8s.io/apiserver v0.27.6 h1:r/eHN8r3lG2buggHrVMy++kKhHlHn1HWSX1dqDtes54=
k8s.io/apiserver v0.27.6/go.mod h1:Xeo9OEXn2kDLK5pqspjdXQx7YKgDyKSpwIB4p0BmpAQ=
k8s.io/client-go v0.27.6 h1:vzI8804gpUtpMCNaFjIFyJrifH7u//LJCJPy8fQuYQg=
k8s.io/client-go v0.27.6/go.mod h1:PMsXcDKiJTW7PHJ64oEsIUJF319wm+EFlCj76oE5QXM=
k8s.io/code-generator v0.27.6 h1:1zkSDvylcA11s91aYg5U7fZ24EXMZ+KIDOj/Z3Ti4c8=
k8s.io/code-generator v0.27.6/go.mod h1:DPung1sI5vBgn4AGKtlPRQAyagj/ir/4jI55ipZHVww=
k8s.io/component-base v0.27.6 h1:hF5WxX7Tpi9/dXAbLjPVkIA6CA6Pi6r9JOHyo0uCDYI=
k8s.io/component-base v0.27.6/go.mod h1:NvjLtaneUeb0GgMPpCBF+4LNB9GuhDHi16uUTjBhQfU=
k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08=
k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw=
k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kms v0.0.0-20230612180710-1a96b5630cc5 h1:FEbRbZrrqU3I/uJAcwKE9pTlxQ9wHW6pyM3WBS2V5Ps=
k8s.io/kms v0.0.0-20230612180710-1a96b5630cc5/go.mod h1:UNoTLRDv9IUEbWsTxzofsX3SBiSKNYS30T3zOgF8dgI=
k8s.io/kms v0.27.6 h1:0IWDsxoget7Gs4zzMAY+y7dwNaGvwlAvS2XQVuFECU0=
k8s.io/kms v0.27.6/go.mod h1:9YQuCFa+n88RWokHkl+4RHFQ9DATSip/ihBqxlDUBuw=
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg=
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg=
k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY=
2 changes: 1 addition & 1 deletion hack/update-codegen.sh
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-

CLIENTSET_NAME_VERSIONED=clientset \
CLIENTSET_PKG_NAME=clientset \
"${CODEGEN_PKG}/generate-groups.sh" "deepcopy,client,lister,informer" \
"${CODEGEN_PKG}/generate-groups.sh" "deepcopy,applyconfiguration,client,lister,informer" \
k8s.io/apiextensions-apiserver/pkg/client \
k8s.io/apiextensions-apiserver/pkg/apis \
"apiextensions:v1beta1,v1" \
26 changes: 26 additions & 0 deletions pkg/apis/apiextensions/validation/validation_test.go
Original file line number Diff line number Diff line change
@@ -8676,6 +8676,32 @@ func TestValidateCustomResourceDefinitionValidation(t *testing.T) {
forbidden("spec.validation.openAPIV3Schema.properties[f].x-kubernetes-validations[0].messageExpression"),
},
},
{
name: "x-kubernetes-validations rule with lowerAscii check should be within estimated cost limit",
opts: validationOptions{requireStructuralSchema: true},
input: apiextensions.CustomResourceValidation{
OpenAPIV3Schema: &apiextensions.JSONSchemaProps{
Type: "object",
Properties: map[string]apiextensions.JSONSchemaProps{
"f": {
Type: "array",
MaxItems: pointer.Int64(5),
Items: &apiextensions.JSONSchemaPropsOrArray{
Schema: &apiextensions.JSONSchemaProps{
Type: "string",
MaxLength: pointer.Int64(5),
},
},
XValidations: apiextensions.ValidationRules{
{
Rule: "self.all(x, self.exists_one(y, x.lowerAscii() == y.lowerAscii()))",
},
},
},
},
},
},
},
{
name: "x-kubernetes-validations rule invalidated by messageExpression exceeding per-CRD estimated cost limit",
opts: validationOptions{requireStructuralSchema: true},
1 change: 1 addition & 0 deletions pkg/apiserver/schema/cel/celcoststability_test.go
Original file line number Diff line number Diff line change
@@ -115,6 +115,7 @@ func TestCelCostStability(t *testing.T) {
"self.val1.substring(4, 10).trim() == 'takes'": 6,
"self.val1.upperAscii() == 'ROOK TAKES 👑'": 6,
"self.val1.lowerAscii() == 'rook takes 👑'": 6,
"self.val1.lowerAscii() == self.val1.lowerAscii()": 10,
},
},
{name: "escaped strings",
12 changes: 7 additions & 5 deletions pkg/apiserver/schema/cel/compilation_test.go
Original file line number Diff line number Diff line change
@@ -1631,17 +1631,19 @@ func TestCostEstimation(t *testing.T) {
name: "extended library replace",
schemaGenerator: func(max *int64) *schema.Structural {
strType := withMaxLength(primitiveType("string", ""), max)
beforeLen := int64(2)
afterLen := int64(4)
objType := objectType(map[string]schema.Structural{
"str": strType,
"before": strType,
"after": strType,
"before": withMaxLength(primitiveType("string", ""), &beforeLen),
"after": withMaxLength(primitiveType("string", ""), &afterLen),
})
objType = withRule(objType, "self.str.replace(self.before, self.after) == 'does not matter'")
return &objType
},
expectedCalcCost: 629154,
setMaxElements: 10,
expectedSetCost: 16,
expectedCalcCost: 629154, // cost is based on the result size of the replace() call
setMaxElements: 4,
expectedSetCost: 12,
},
{
name: "extended library split",

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading