mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 06:27:05 +00:00
Add runtime.ObjectConvertor to RESTMapper
This commit is contained in:
parent
dc862ae463
commit
f0c23d68f7
@ -71,11 +71,13 @@ func InterfacesFor(version string) (*meta.VersionInterfaces, error) {
|
|||||||
case "v1beta1":
|
case "v1beta1":
|
||||||
return &meta.VersionInterfaces{
|
return &meta.VersionInterfaces{
|
||||||
Codec: v1beta1.Codec,
|
Codec: v1beta1.Codec,
|
||||||
|
ObjectConvertor: api.Scheme,
|
||||||
MetadataAccessor: accessor,
|
MetadataAccessor: accessor,
|
||||||
}, nil
|
}, nil
|
||||||
case "v1beta2":
|
case "v1beta2":
|
||||||
return &meta.VersionInterfaces{
|
return &meta.VersionInterfaces{
|
||||||
Codec: v1beta2.Codec,
|
Codec: v1beta2.Codec,
|
||||||
|
ObjectConvertor: api.Scheme,
|
||||||
MetadataAccessor: accessor,
|
MetadataAccessor: accessor,
|
||||||
}, nil
|
}, nil
|
||||||
default:
|
default:
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
// VersionInterfaces contains the interfaces one should use for dealing with types of a particular version.
|
// VersionInterfaces contains the interfaces one should use for dealing with types of a particular version.
|
||||||
type VersionInterfaces struct {
|
type VersionInterfaces struct {
|
||||||
runtime.Codec
|
runtime.Codec
|
||||||
|
runtime.ObjectConvertor
|
||||||
MetadataAccessor
|
MetadataAccessor
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,6 +87,7 @@ type RESTMapping struct {
|
|||||||
Kind string
|
Kind string
|
||||||
|
|
||||||
runtime.Codec
|
runtime.Codec
|
||||||
|
runtime.ObjectConvertor
|
||||||
MetadataAccessor
|
MetadataAccessor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ type DefaultRESTMapper struct {
|
|||||||
interfacesFunc VersionInterfacesFunc
|
interfacesFunc VersionInterfacesFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
// VersionInterfacesFunc returns the appropriate codec and metadata accessor for a
|
// VersionInterfacesFunc returns the appropriate codec, typer, and metadata accessor for a
|
||||||
// given api version, or false if no such api version exists.
|
// given api version, or false if no such api version exists.
|
||||||
type VersionInterfacesFunc func(apiVersion string) (*VersionInterfaces, bool)
|
type VersionInterfacesFunc func(apiVersion string) (*VersionInterfaces, bool)
|
||||||
|
|
||||||
@ -162,6 +162,7 @@ func (m *DefaultRESTMapper) RESTMapping(version, kind string) (*RESTMapping, err
|
|||||||
Kind: kind,
|
Kind: kind,
|
||||||
|
|
||||||
Codec: interfaces.Codec,
|
Codec: interfaces.Codec,
|
||||||
|
ObjectConvertor: interfaces.ObjectConvertor,
|
||||||
MetadataAccessor: interfaces.MetadataAccessor,
|
MetadataAccessor: interfaces.MetadataAccessor,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -36,11 +36,18 @@ func (fakeCodec) DecodeInto([]byte, runtime.Object) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fakeConvertor struct{}
|
||||||
|
|
||||||
|
func (fakeConvertor) ConvertToVersion(in runtime.Object, _ string) (runtime.Object, error) {
|
||||||
|
return in, nil
|
||||||
|
}
|
||||||
|
|
||||||
var validCodec = fakeCodec{}
|
var validCodec = fakeCodec{}
|
||||||
var validAccessor = resourceAccessor{}
|
var validAccessor = resourceAccessor{}
|
||||||
|
var validConvertor = fakeConvertor{}
|
||||||
|
|
||||||
func fakeInterfaces(version string) (*VersionInterfaces, bool) {
|
func fakeInterfaces(version string) (*VersionInterfaces, bool) {
|
||||||
return &VersionInterfaces{Codec: validCodec, MetadataAccessor: validAccessor}, true
|
return &VersionInterfaces{Codec: validCodec, ObjectConvertor: validConvertor, MetadataAccessor: validAccessor}, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmatchedVersionInterfaces(version string) (*VersionInterfaces, bool) {
|
func unmatchedVersionInterfaces(version string) (*VersionInterfaces, bool) {
|
||||||
@ -155,7 +162,7 @@ func TestRESTMapperRESTMapping(t *testing.T) {
|
|||||||
if mapping.APIVersion != version {
|
if mapping.APIVersion != version {
|
||||||
t.Errorf("%d: unexpected version: %#v", i, mapping)
|
t.Errorf("%d: unexpected version: %#v", i, mapping)
|
||||||
}
|
}
|
||||||
if mapping.Codec == nil || mapping.MetadataAccessor == nil {
|
if mapping.Codec == nil || mapping.MetadataAccessor == nil || mapping.ObjectConvertor == nil {
|
||||||
t.Errorf("%d: missing codec and accessor: %#v", i, mapping)
|
t.Errorf("%d: missing codec and accessor: %#v", i, mapping)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user