Add a strongly typed error for unrecognized kind/type/version
This commit is contained in:
@@ -143,14 +143,14 @@ func (s *Scheme) KnownTypes(version string) map[string]reflect.Type {
|
||||
|
||||
// NewObject returns a new object of the given version and name,
|
||||
// or an error if it hasn't been registered.
|
||||
func (s *Scheme) NewObject(versionName, typeName string) (interface{}, error) {
|
||||
func (s *Scheme) NewObject(versionName, kind string) (interface{}, error) {
|
||||
if types, ok := s.versionMap[versionName]; ok {
|
||||
if t, ok := types[typeName]; ok {
|
||||
if t, ok := types[kind]; ok {
|
||||
return reflect.New(t).Interface(), nil
|
||||
}
|
||||
return nil, fmt.Errorf("no type '%v' for version '%v'", typeName, versionName)
|
||||
return nil, ¬RegisteredErr{kind: kind, version: versionName}
|
||||
}
|
||||
return nil, fmt.Errorf("no version '%v'", versionName)
|
||||
return nil, ¬RegisteredErr{kind: kind, version: versionName}
|
||||
}
|
||||
|
||||
// AddConversionFuncs adds functions to the list of conversion functions. The given
|
||||
@@ -284,7 +284,7 @@ func (s *Scheme) ObjectVersionAndKind(obj interface{}) (apiVersion, kind string,
|
||||
version, vOK := s.typeToVersion[t]
|
||||
kinds, kOK := s.typeToKind[t]
|
||||
if !vOK || !kOK {
|
||||
return "", "", fmt.Errorf("unregistered type: %v", t)
|
||||
return "", "", ¬RegisteredErr{t: t}
|
||||
}
|
||||
apiVersion = version
|
||||
kind = kinds[0]
|
||||
|
Reference in New Issue
Block a user