Merge pull request #112223 from astraw99/fix-ownerRef-validate

Fix ownerRef controller validate err msg
This commit is contained in:
Kubernetes Prow Robot 2022-11-07 11:20:18 -08:00 committed by GitHub
commit 9349688d40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 9 deletions

View File

@ -91,15 +91,16 @@ func validateOwnerReference(ownerReference metav1.OwnerReference, fldPath *field
// ValidateOwnerReferences validates that a set of owner references are correctly defined. // ValidateOwnerReferences validates that a set of owner references are correctly defined.
func ValidateOwnerReferences(ownerReferences []metav1.OwnerReference, fldPath *field.Path) field.ErrorList { func ValidateOwnerReferences(ownerReferences []metav1.OwnerReference, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{} allErrs := field.ErrorList{}
controllerName := "" firstControllerName := ""
for _, ref := range ownerReferences { for _, ref := range ownerReferences {
allErrs = append(allErrs, validateOwnerReference(ref, fldPath)...) allErrs = append(allErrs, validateOwnerReference(ref, fldPath)...)
if ref.Controller != nil && *ref.Controller { if ref.Controller != nil && *ref.Controller {
if controllerName != "" { curControllerName := ref.Kind + "/" + ref.Name
if firstControllerName != "" {
allErrs = append(allErrs, field.Invalid(fldPath, ownerReferences, allErrs = append(allErrs, field.Invalid(fldPath, ownerReferences,
fmt.Sprintf("Only one reference can have Controller set to true. Found \"true\" in references for %v and %v", controllerName, ref.Name))) fmt.Sprintf("Only one reference can have Controller set to true. Found \"true\" in references for %v and %v", firstControllerName, curControllerName)))
} else { } else {
controllerName = ref.Name firstControllerName = curControllerName
} }
} }
} }

View File

@ -163,34 +163,34 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) {
ownerReferences: []metav1.OwnerReference{ ownerReferences: []metav1.OwnerReference{
{ {
APIVersion: "customresourceVersion", APIVersion: "customresourceVersion",
Kind: "customresourceKind", Kind: "customresourceKind1",
Name: "name", Name: "name",
UID: "1", UID: "1",
Controller: &falseVar, Controller: &falseVar,
}, },
{ {
APIVersion: "customresourceVersion", APIVersion: "customresourceVersion",
Kind: "customresourceKind", Kind: "customresourceKind2",
Name: "name", Name: "name",
UID: "2", UID: "2",
Controller: &trueVar, Controller: &trueVar,
}, },
{ {
APIVersion: "customresourceVersion", APIVersion: "customresourceVersion",
Kind: "customresourceKind", Kind: "customresourceKind3",
Name: "name", Name: "name",
UID: "3", UID: "3",
Controller: &trueVar, Controller: &trueVar,
}, },
{ {
APIVersion: "customresourceVersion", APIVersion: "customresourceVersion",
Kind: "customresourceKind", Kind: "customresourceKind4",
Name: "name", Name: "name",
UID: "4", UID: "4",
}, },
}, },
expectError: true, expectError: true,
expectedErrorMessage: "Only one reference can have Controller set to true", expectedErrorMessage: "Only one reference can have Controller set to true. Found \"true\" in references for customresourceKind2/name and customresourceKind3/name",
}, },
} }