diff --git a/pkg/conversion/error.go b/pkg/conversion/error.go index 7ee24ee4380..1c053c3eaae 100644 --- a/pkg/conversion/error.go +++ b/pkg/conversion/error.go @@ -49,3 +49,35 @@ func IsNotRegisteredError(err error) bool { _, ok := err.(*notRegisteredErr) return ok } + +type missingKindErr struct { + data string +} + +func (k *missingKindErr) Error() string { + return fmt.Sprintf("Object 'Kind' is missing in '%s'", k.data) +} + +func IsMissingKind(err error) bool { + if err == nil { + return false + } + _, ok := err.(*missingKindErr) + return ok +} + +type missingVersionErr struct { + data string +} + +func (k *missingVersionErr) Error() string { + return fmt.Sprintf("Object 'apiVersion' is missing in '%s'", k.data) +} + +func IsMissingVersion(err error) bool { + if err == nil { + return false + } + _, ok := err.(*missingVersionErr) + return ok +} diff --git a/pkg/runtime/error.go b/pkg/runtime/error.go index a84fe6ae9f3..e49dfe8f22e 100644 --- a/pkg/runtime/error.go +++ b/pkg/runtime/error.go @@ -25,3 +25,15 @@ import ( func IsNotRegisteredError(err error) bool { return conversion.IsNotRegisteredError(err) } + +// IsMissingKind returns true if the error indicates that the provided object +// is missing a 'Kind' field. +func IsMissingKind(err error) bool { + return conversion.IsMissingKind(err) +} + +// IsMissingVersion returns true if the error indicates that the provided object +// is missing a 'Versioj' field. +func IsMissingVersion(err error) bool { + return conversion.IsMissingVersion(err) +}