Clarify accepted versions skew requirements, update field documentation

This commit is contained in:
Jordan Liggitt 2019-07-16 14:34:02 -04:00
parent dda9bcb082
commit 649ee4f2d0
5 changed files with 15 additions and 11 deletions

View File

@ -95,10 +95,10 @@ type AdmissionRequest struct {
Operation Operation Operation Operation
// UserInfo is information about the requesting user // UserInfo is information about the requesting user
UserInfo authentication.UserInfo UserInfo authentication.UserInfo
// Object is the object from the incoming request prior to default values being applied // Object is the object from the incoming request.
// +optional // +optional
Object runtime.Object Object runtime.Object
// OldObject is the existing object. Only populated for UPDATE requests. // OldObject is the existing object. Only populated for DELETE and UPDATE requests.
// +optional // +optional
OldObject runtime.Object OldObject runtime.Object
// DryRun indicates that modifications will definitely not be persisted for this request. // DryRun indicates that modifications will definitely not be persisted for this request.

View File

@ -152,6 +152,10 @@ func validateRule(rule *admissionregistration.Rule, fldPath *field.Path, allowSu
return allErrors return allErrors
} }
// AcceptedAdmissionReviewVersions contains the list of AdmissionReview versions the *prior* version of the API server understands.
// 1.15: server understands v1beta1; accepted versions are ["v1beta1"]
// 1.16: server understands v1, v1beta1; accepted versions are ["v1beta1"]
// 1.17: server understands v1, v1beta1; accepted versions are ["v1","v1beta1"]
var AcceptedAdmissionReviewVersions = []string{v1beta1.SchemeGroupVersion.Version} var AcceptedAdmissionReviewVersions = []string{v1beta1.SchemeGroupVersion.Version}
func isAcceptedAdmissionReviewVersion(v string) bool { func isAcceptedAdmissionReviewVersion(v string) bool {
@ -188,7 +192,7 @@ func validateAdmissionReviewVersions(versions []string, requireRecognizedVersion
if requireRecognizedVersion && !hasAcceptedVersion { if requireRecognizedVersion && !hasAcceptedVersion {
allErrors = append(allErrors, field.Invalid( allErrors = append(allErrors, field.Invalid(
fldPath, versions, fldPath, versions,
fmt.Sprintf("none of the versions accepted by this server. accepted version(s) are %v", fmt.Sprintf("must include at least one of %v",
strings.Join(AcceptedAdmissionReviewVersions, ", ")))) strings.Join(AcceptedAdmissionReviewVersions, ", "))))
} }
} }

View File

@ -82,7 +82,7 @@ type AdmissionRequest struct {
RequestSubResource string `json:"requestSubResource,omitempty" protobuf:"bytes,15,opt,name=requestSubResource"` RequestSubResource string `json:"requestSubResource,omitempty" protobuf:"bytes,15,opt,name=requestSubResource"`
// Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and // Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and
// rely on the server to generate the name. If that is the case, this method will return the empty string. // rely on the server to generate the name. If that is the case, this field will contain an empty string.
// +optional // +optional
Name string `json:"name,omitempty" protobuf:"bytes,5,opt,name=name"` Name string `json:"name,omitempty" protobuf:"bytes,5,opt,name=name"`
// Namespace is the namespace associated with the request (if any). // Namespace is the namespace associated with the request (if any).
@ -93,10 +93,10 @@ type AdmissionRequest struct {
Operation Operation `json:"operation" protobuf:"bytes,7,opt,name=operation"` Operation Operation `json:"operation" protobuf:"bytes,7,opt,name=operation"`
// UserInfo is information about the requesting user // UserInfo is information about the requesting user
UserInfo authenticationv1.UserInfo `json:"userInfo" protobuf:"bytes,8,opt,name=userInfo"` UserInfo authenticationv1.UserInfo `json:"userInfo" protobuf:"bytes,8,opt,name=userInfo"`
// Object is the object from the incoming request prior to default values being applied // Object is the object from the incoming request.
// +optional // +optional
Object runtime.RawExtension `json:"object,omitempty" protobuf:"bytes,9,opt,name=object"` Object runtime.RawExtension `json:"object,omitempty" protobuf:"bytes,9,opt,name=object"`
// OldObject is the existing object. Only populated for UPDATE requests. // OldObject is the existing object. Only populated for DELETE and UPDATE requests.
// +optional // +optional
OldObject runtime.RawExtension `json:"oldObject,omitempty" protobuf:"bytes,10,opt,name=oldObject"` OldObject runtime.RawExtension `json:"oldObject,omitempty" protobuf:"bytes,10,opt,name=oldObject"`
// DryRun indicates that modifications will definitely not be persisted for this request. // DryRun indicates that modifications will definitely not be persisted for this request.
@ -115,7 +115,7 @@ type AdmissionRequest struct {
// AdmissionResponse describes an admission response. // AdmissionResponse describes an admission response.
type AdmissionResponse struct { type AdmissionResponse struct {
// UID is an identifier for the individual request/response. // UID is an identifier for the individual request/response.
// This should be copied over from the corresponding AdmissionRequest. // This must be copied over from the corresponding AdmissionRequest.
UID types.UID `json:"uid" protobuf:"bytes,1,opt,name=uid"` UID types.UID `json:"uid" protobuf:"bytes,1,opt,name=uid"`
// Allowed indicates whether or not the admission request was permitted. // Allowed indicates whether or not the admission request was permitted.

View File

@ -82,7 +82,7 @@ type AdmissionRequest struct {
RequestSubResource string `json:"requestSubResource,omitempty" protobuf:"bytes,15,opt,name=requestSubResource"` RequestSubResource string `json:"requestSubResource,omitempty" protobuf:"bytes,15,opt,name=requestSubResource"`
// Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and // Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and
// rely on the server to generate the name. If that is the case, this method will return the empty string. // rely on the server to generate the name. If that is the case, this field will contain an empty string.
// +optional // +optional
Name string `json:"name,omitempty" protobuf:"bytes,5,opt,name=name"` Name string `json:"name,omitempty" protobuf:"bytes,5,opt,name=name"`
// Namespace is the namespace associated with the request (if any). // Namespace is the namespace associated with the request (if any).
@ -93,10 +93,10 @@ type AdmissionRequest struct {
Operation Operation `json:"operation" protobuf:"bytes,7,opt,name=operation"` Operation Operation `json:"operation" protobuf:"bytes,7,opt,name=operation"`
// UserInfo is information about the requesting user // UserInfo is information about the requesting user
UserInfo authenticationv1.UserInfo `json:"userInfo" protobuf:"bytes,8,opt,name=userInfo"` UserInfo authenticationv1.UserInfo `json:"userInfo" protobuf:"bytes,8,opt,name=userInfo"`
// Object is the object from the incoming request prior to default values being applied // Object is the object from the incoming request.
// +optional // +optional
Object runtime.RawExtension `json:"object,omitempty" protobuf:"bytes,9,opt,name=object"` Object runtime.RawExtension `json:"object,omitempty" protobuf:"bytes,9,opt,name=object"`
// OldObject is the existing object. Only populated for UPDATE requests. // OldObject is the existing object. Only populated for DELETE and UPDATE requests.
// +optional // +optional
OldObject runtime.RawExtension `json:"oldObject,omitempty" protobuf:"bytes,10,opt,name=oldObject"` OldObject runtime.RawExtension `json:"oldObject,omitempty" protobuf:"bytes,10,opt,name=oldObject"`
// DryRun indicates that modifications will definitely not be persisted for this request. // DryRun indicates that modifications will definitely not be persisted for this request.

View File

@ -298,7 +298,7 @@ func validateConversionReviewVersions(versions []string, requireRecognizedVersio
if requireRecognizedVersion && !hasAcceptedVersion { if requireRecognizedVersion && !hasAcceptedVersion {
allErrs = append(allErrs, field.Invalid( allErrs = append(allErrs, field.Invalid(
fldPath, versions, fldPath, versions,
fmt.Sprintf("none of the versions accepted by this server. accepted version(s) are %v", fmt.Sprintf("must include at least one of %v",
strings.Join(acceptedConversionReviewVersion, ", ")))) strings.Join(acceptedConversionReviewVersion, ", "))))
} }
} }