diff --git a/apiextensions/v1alpha1/tests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml b/apiextensions/v1alpha1/tests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml index 0edca863fb8..f16daafdaa9 100644 --- a/apiextensions/v1alpha1/tests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml +++ b/apiextensions/v1alpha1/tests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml @@ -167,6 +167,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: spec.fieldToExclude + versions: + - v1 - path: status.anotherField versions: - v1alpha1 @@ -201,6 +203,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: spec.fieldToExclude + versions: + - v1 - path: status.anotherField versions: - v1alpha1 @@ -237,6 +241,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: spec.fieldToExclude + versions: + - v1 - path: spec.fieldToExclude versions: - v1alpha1 @@ -274,6 +280,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: "1invalidFieldName" + versions: + - v1 expectedError: "spec.compatibilitySchema.excludedFields[0].path: Invalid value" - name: Should not be able to create CompatibilityRequirement with invalid DNS 1035 label in additionalVersions @@ -376,6 +384,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: spec.thisFieldNameIsWayTooLongBecauseItExceedsSixtyThreeCharactersInLength + versions: + - v1 expectedError: "path must be dot-separated field names, each starting with a letter and containing only letters, digits, and underscores not exceeding 63 characters" - name: Should not be able to create CompatibilityRequirement with excludedFields path containing more than 16 fields @@ -410,6 +420,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q + versions: + - v1 expectedError: "path must be dot-separated field names, each starting with a letter and containing only letters, digits, and underscores not exceeding 63 characters. There may be at most 16 fields in the path" - name: Should not be able to create CompatibilityRequirement with excludedFields path containing invalid characters @@ -444,6 +456,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: spec.field-name + versions: + - v1 expectedError: "path must be dot-separated field names, each starting with a letter and containing only letters, digits, and underscores not exceeding 63 characters" - name: Should be able to create CompatibilityRequirement with excludedFields path containing exactly 16 fields @@ -478,6 +492,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p + versions: + - v1 expected: | apiVersion: apiextensions.openshift.io/v1alpha1 kind: CompatibilityRequirement @@ -509,6 +525,8 @@ tests: defaultSelection: StorageOnly excludedFields: - path: a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p + versions: + - v1 - name: Should not be able to create CompatibilityRequirement with empty objectSchemaValidation.namespaceSelector initial: | diff --git a/apiextensions/v1alpha1/types_compatibilityrequirement.go b/apiextensions/v1alpha1/types_compatibilityrequirement.go index 0da25370a9b..ef1a10b5f5e 100644 --- a/apiextensions/v1alpha1/types_compatibilityrequirement.go +++ b/apiextensions/v1alpha1/types_compatibilityrequirement.go @@ -166,7 +166,7 @@ type APIExcludedField struct { // +kubebuilder:validation:MinItems=1 // +kubebuilder:validation:MaxItems=32 // +listType=set - // +optional + // +required Versions []APIVersionString `json:"versions,omitempty"` } diff --git a/apiextensions/v1alpha1/zz_generated.crd-manifests/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml b/apiextensions/v1alpha1/zz_generated.crd-manifests/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml index 8ae4185ee2f..65283027f51 100644 --- a/apiextensions/v1alpha1/zz_generated.crd-manifests/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml +++ b/apiextensions/v1alpha1/zz_generated.crd-manifests/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml @@ -138,6 +138,7 @@ spec: x-kubernetes-list-type: set required: - path + - versions type: object maxItems: 64 minItems: 1 diff --git a/apiextensions/v1alpha1/zz_generated.featuregated-crd-manifests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml b/apiextensions/v1alpha1/zz_generated.featuregated-crd-manifests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml index 72ce9442a1e..1c219381632 100644 --- a/apiextensions/v1alpha1/zz_generated.featuregated-crd-manifests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml +++ b/apiextensions/v1alpha1/zz_generated.featuregated-crd-manifests/compatibilityrequirements.apiextensions.openshift.io/CRDCompatibilityRequirementOperator.yaml @@ -139,6 +139,7 @@ spec: x-kubernetes-list-type: set required: - path + - versions type: object maxItems: 64 minItems: 1 diff --git a/openapi/generated_openapi/zz_generated.openapi.go b/openapi/generated_openapi/zz_generated.openapi.go index 1b7063dd42f..63c441ccbda 100644 --- a/openapi/generated_openapi/zz_generated.openapi.go +++ b/openapi/generated_openapi/zz_generated.openapi.go @@ -1750,7 +1750,7 @@ func schema_openshift_api_apiextensions_v1alpha1_APIExcludedField(ref common.Ref }, }, }, - Required: []string{"path"}, + Required: []string{"path", "versions"}, }, }, } diff --git a/payload-manifests/crds/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml b/payload-manifests/crds/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml index 8ae4185ee2f..65283027f51 100644 --- a/payload-manifests/crds/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml +++ b/payload-manifests/crds/0000_20_crd-compatibility-checker_01_compatibilityrequirements.crd.yaml @@ -138,6 +138,7 @@ spec: x-kubernetes-list-type: set required: - path + - versions type: object maxItems: 64 minItems: 1