Fix subresource parsing for declarative validation

This commit is contained in:
Joe Betz 2025-03-13 13:05:54 -04:00
parent 336a32a270
commit d9a2dee622
2 changed files with 15 additions and 6 deletions

View File

@ -102,10 +102,12 @@ func parseSubresourcePath(subresourcePath string) ([]string, error) {
if len(subresourcePath) == 0 {
return nil, nil
}
if subresourcePath[0] != '/' {
return nil, fmt.Errorf("invalid subresource path: %s", subresourcePath)
parts := strings.Split(subresourcePath, "/")
for _, part := range parts {
if len(part) == 0 {
return nil, fmt.Errorf("invalid subresource path: %s", subresourcePath)
}
}
parts := strings.Split(subresourcePath[1:], "/")
return parts, nil
}

View File

@ -85,15 +85,22 @@ func TestValidateDeclaratively(t *testing.T) {
expected: field.ErrorList{invalidRestartPolicyErr, mutatedRestartPolicyErr},
},
{
name: "update subresource",
subresource: "/status",
name: "update subresource with declarative validation",
subresource: "status",
object: valid,
oldObject: valid,
expected: field.ErrorList{invalidStatusErr},
},
{
name: "update subresource without declarative validation",
subresource: "scale",
object: valid,
oldObject: valid,
expected: field.ErrorList{}, // Expect no errors if there is no registered validation
},
{
name: "invalid subresource",
subresource: "invalid/status",
subresource: "/invalid/status",
object: valid,
oldObject: valid,
expected: field.ErrorList{invalidSubresourceErr},