Skip to content

Commit 3193e78

Browse files
authored
Merge pull request kubernetes#77333 from sttts/sttts-structural-crd-pruning
apiextensions: implement structural schema CRD pruning
2 parents b10e16e + d10f8c1 commit 3193e78

File tree

27 files changed

+1868
-237
lines changed

27 files changed

+1868
-237
lines changed

api/openapi-spec/swagger.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ go_library(
1515
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1616
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
1717
"//vendor/github.com/google/gofuzz:go_default_library",
18+
"//vendor/k8s.io/utils/pointer:go_default_library",
1819
],
1920
)
2021

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/fuzzer.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
28+
"k8s.io/utils/pointer"
2829
)
2930

3031
var swaggerMetadataDescriptions = metav1.ObjectMeta{}.SwaggerDoc()
@@ -69,6 +70,9 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
6970
if obj.Conversion.Strategy == apiextensions.WebhookConverter && len(obj.Conversion.ConversionReviewVersions) == 0 {
7071
obj.Conversion.ConversionReviewVersions = []string{"v1beta1"}
7172
}
73+
if obj.PreserveUnknownFields == nil {
74+
obj.PreserveUnknownFields = pointer.BoolPtr(true)
75+
}
7276
},
7377
func(obj *apiextensions.CustomResourceDefinition, c fuzz.Continue) {
7478
c.FuzzNoCustom(obj)

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ type CustomResourceDefinitionSpec struct {
7373

7474
// `conversion` defines conversion settings for the CRD.
7575
Conversion *CustomResourceConversion
76+
77+
// preserveUnknownFields disables pruning of object fields which are not
78+
// specified in the OpenAPI schema. apiVersion, kind, metadata and known
79+
// fields inside metadata are always preserved.
80+
// Defaults to true in v1beta and will default to false in v1.
81+
PreserveUnknownFields *bool
7682
}
7783

7884
// CustomResourceConversion describes how to convert different versions of a CR.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/defaults.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ func SetDefaults_CustomResourceDefinitionSpec(obj *CustomResourceDefinitionSpec)
7272
if obj.Conversion.Strategy == WebhookConverter && len(obj.Conversion.ConversionReviewVersions) == 0 {
7373
obj.Conversion.ConversionReviewVersions = []string{SchemeGroupVersion.Version}
7474
}
75+
if obj.PreserveUnknownFields == nil {
76+
obj.PreserveUnknownFields = utilpointer.BoolPtr(true)
77+
}
7578
}
7679

7780
// SetDefaults_ServiceReference sets defaults for Webhook's ServiceReference

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go

Lines changed: 218 additions & 182 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ type CustomResourceDefinitionSpec struct {
7878
// `conversion` defines conversion settings for the CRD.
7979
// +optional
8080
Conversion *CustomResourceConversion `json:"conversion,omitempty" protobuf:"bytes,9,opt,name=conversion"`
81+
82+
// preserveUnknownFields disables pruning of object fields which are not
83+
// specified in the OpenAPI schema. apiVersion, kind, metadata and known
84+
// fields inside metadata are always preserved.
85+
// Defaults to true in v1beta and will default to false in v1.
86+
PreserveUnknownFields *bool `json:"preserveUnknownFields,omitempty" protobuf:"varint,10,opt,name=preserveUnknownFields"`
8187
}
8288

8389
// CustomResourceConversion describes how to convert different versions of a CR.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)