mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Treat NoCorrespondingTypeError as MissingVersionError
This commit is contained in:
parent
b4211dea98
commit
13cb241b18
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/kube-openapi/pkg/util/proto"
|
"k8s.io/kube-openapi/pkg/util/proto"
|
||||||
"sigs.k8s.io/structured-merge-diff/typed"
|
"sigs.k8s.io/structured-merge-diff/typed"
|
||||||
"sigs.k8s.io/structured-merge-diff/value"
|
"sigs.k8s.io/structured-merge-diff/value"
|
||||||
@ -93,7 +94,7 @@ func (c *typeConverter) ObjectToTyped(obj runtime.Object) (typed.TypedValue, err
|
|||||||
gvk := obj.GetObjectKind().GroupVersionKind()
|
gvk := obj.GetObjectKind().GroupVersionKind()
|
||||||
t := c.parser.Type(gvk)
|
t := c.parser.Type(gvk)
|
||||||
if t == nil {
|
if t == nil {
|
||||||
return nil, fmt.Errorf("no corresponding type for %v", gvk)
|
return nil, newNoCorrespondingTypeError(gvk)
|
||||||
}
|
}
|
||||||
return t.FromUnstructured(u)
|
return t.FromUnstructured(u)
|
||||||
}
|
}
|
||||||
@ -108,7 +109,7 @@ func (c *typeConverter) YAMLToTyped(from []byte) (typed.TypedValue, error) {
|
|||||||
gvk := unstructured.GetObjectKind().GroupVersionKind()
|
gvk := unstructured.GetObjectKind().GroupVersionKind()
|
||||||
t := c.parser.Type(gvk)
|
t := c.parser.Type(gvk)
|
||||||
if t == nil {
|
if t == nil {
|
||||||
return nil, fmt.Errorf("no corresponding type for %v", gvk)
|
return nil, newNoCorrespondingTypeError(gvk)
|
||||||
}
|
}
|
||||||
return t.FromYAML(typed.YAMLObject(string(from)))
|
return t.FromYAML(typed.YAMLObject(string(from)))
|
||||||
}
|
}
|
||||||
@ -125,3 +126,23 @@ func valueToObject(value *value.Value) (runtime.Object, error) {
|
|||||||
}
|
}
|
||||||
return &unstructured.Unstructured{Object: u}, nil
|
return &unstructured.Unstructured{Object: u}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type noCorrespondingTypeErr struct {
|
||||||
|
gvk schema.GroupVersionKind
|
||||||
|
}
|
||||||
|
|
||||||
|
func newNoCorrespondingTypeError(gvk schema.GroupVersionKind) error {
|
||||||
|
return &noCorrespondingTypeErr{gvk: gvk}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (k *noCorrespondingTypeErr) Error() string {
|
||||||
|
return fmt.Sprintf("no corresponding type for %v", k.gvk)
|
||||||
|
}
|
||||||
|
|
||||||
|
func isNoCorrespondingTypeError(err error) bool {
|
||||||
|
if err == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
_, ok := err.(*noCorrespondingTypeErr)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
@ -97,5 +97,5 @@ func (v *versionConverter) Convert(object typed.TypedValue, version fieldpath.AP
|
|||||||
|
|
||||||
// IsMissingVersionError
|
// IsMissingVersionError
|
||||||
func (v *versionConverter) IsMissingVersionError(err error) bool {
|
func (v *versionConverter) IsMissingVersionError(err error) bool {
|
||||||
return runtime.IsNotRegisteredError(err)
|
return runtime.IsNotRegisteredError(err) || isNoCorrespondingTypeError(err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user