Note: By default, when creating a resource with apiserver-boot create group version resource a validation
function will be created in the versioned <kind>_types.go file.
To add server side validation for your resource override the Validate function
on the <Kind>Strategy struct in the version package.
Example:
File: pkg/apis/<group>/<version>/bar_types.go
// Resource Validation
func (BarStrategy) Validate(ctx request.Context, obj runtime.Object) field.ErrorList {
bar := obj.(*Bar)
errors := field.ErrorList{}
if ... {
errors = append(errors, field.Invalid(
field.NewPath("spec", "Field"),
*bar.Spec.Field,
"Error message"))
}
return errors
}A default <Kind>Strategy is generated for each resource with an embedded
default Validation function. To specify custom validation logic,
override the embedded implementation.
Cast the object type to your resource Kind
bar := obj.(*Bar)Use the field.Invalid function to specify errors scoped to fields in the object.
field.Invalid(field.NewPath("spec", "Field"), *bar.Spec.Field, "Error message")Note: To specify a different struct type for validation, specify stragegy in the resource
comment. e.g. // +resource:path=<resource>,strategy=<Kind>Strategy. This struct type must
have a single field of type builders.DefaultStorageStrategy for the generated code to correctly
create an pass it into the wiring.