mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Relax to using namer instead of selflinker in API groupversion
This commit is contained in:
parent
c8ee055b73
commit
0ad588b27b
@ -843,7 +843,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
|
||||
|
||||
requestScopes[v.Name] = &handlers.RequestScope{
|
||||
Namer: handlers.ContextBasedNaming{
|
||||
SelfLinker: meta.NewAccessor(),
|
||||
Namer: meta.NewAccessor(),
|
||||
ClusterScoped: clusterScoped,
|
||||
SelfLinkPathPrefix: selfLinkPrefix,
|
||||
},
|
||||
@ -896,7 +896,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
|
||||
scaleScope.Serializer = serializer.NewCodecFactory(scaleConverter.Scheme())
|
||||
scaleScope.Kind = autoscalingv1.SchemeGroupVersion.WithKind("Scale")
|
||||
scaleScope.Namer = handlers.ContextBasedNaming{
|
||||
SelfLinker: meta.NewAccessor(),
|
||||
Namer: meta.NewAccessor(),
|
||||
ClusterScoped: clusterScoped,
|
||||
SelfLinkPathPrefix: selfLinkPrefix,
|
||||
SelfLinkPathSuffix: "/scale",
|
||||
@ -921,7 +921,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
|
||||
statusScope := *requestScopes[v.Name]
|
||||
statusScope.Subresource = "status"
|
||||
statusScope.Namer = handlers.ContextBasedNaming{
|
||||
SelfLinker: meta.NewAccessor(),
|
||||
Namer: meta.NewAccessor(),
|
||||
ClusterScoped: clusterScoped,
|
||||
SelfLinkPathPrefix: selfLinkPrefix,
|
||||
SelfLinkPathSuffix: "/status",
|
||||
|
@ -292,14 +292,6 @@ type Namer interface {
|
||||
Namespace(obj Object) (string, error)
|
||||
}
|
||||
|
||||
// SelfLinker provides methods for setting and retrieving the SelfLink field of an API object.
|
||||
type SelfLinker interface {
|
||||
SelfLink(obj Object) (string, error)
|
||||
|
||||
// Knowing Name or Namespace is sometimes necessary to use a SelfLinker.
|
||||
Namer
|
||||
}
|
||||
|
||||
// Object interface must be supported by all API types registered with Scheme. Since objects in a scheme are
|
||||
// expected to be serialized to the wire, the interface an Object must provide to the Scheme allows
|
||||
// serializers to set the kind, version, and group the object is represented as. An Object may choose
|
||||
|
@ -298,51 +298,6 @@ func TestResourceVersionerOfAPI(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestTypeMetaSelfLinker(t *testing.T) {
|
||||
table := map[string]struct {
|
||||
obj runtime.Object
|
||||
expect string
|
||||
try string
|
||||
succeed bool
|
||||
}{
|
||||
"normal": {
|
||||
obj: &MyAPIObject{TypeMeta: InternalTypeMeta{SelfLink: "foobar"}},
|
||||
expect: "foobar",
|
||||
try: "newbar",
|
||||
succeed: true,
|
||||
},
|
||||
"fail": {
|
||||
obj: &MyIncorrectlyMarkedAsAPIObject{},
|
||||
succeed: false,
|
||||
},
|
||||
}
|
||||
|
||||
linker := runtime.SelfLinker(meta.NewAccessor())
|
||||
for name, item := range table {
|
||||
got, err := linker.SelfLink(item.obj)
|
||||
if e, a := item.succeed, err == nil; e != a {
|
||||
t.Errorf("%v: expected %v, got %v", name, e, a)
|
||||
}
|
||||
if e, a := item.expect, got; item.succeed && e != a {
|
||||
t.Errorf("%v: expected %v, got %v", name, e, a)
|
||||
}
|
||||
|
||||
err = linker.SetSelfLink(item.obj, item.try)
|
||||
if e, a := item.succeed, err == nil; e != a {
|
||||
t.Errorf("%v: expected %v, got %v", name, e, a)
|
||||
}
|
||||
if item.succeed {
|
||||
got, err := linker.SelfLink(item.obj)
|
||||
if err != nil {
|
||||
t.Errorf("%v: expected no err, got %v", name, err)
|
||||
}
|
||||
if e, a := item.try, got; e != a {
|
||||
t.Errorf("%v: expected %v, got %v", name, e, a)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type MyAPIObject2 struct {
|
||||
metav1.TypeMeta
|
||||
metav1.ObjectMeta
|
||||
|
@ -126,7 +126,7 @@ var newCodec = codecs.LegacyCodec(newGroupVersion)
|
||||
var parameterCodec = runtime.NewParameterCodec(scheme)
|
||||
|
||||
var accessor = meta.NewAccessor()
|
||||
var selfLinker runtime.SelfLinker = accessor
|
||||
var namer runtime.Namer = accessor
|
||||
var admissionControl admission.Interface
|
||||
|
||||
func init() {
|
||||
@ -232,8 +232,7 @@ func handleInternal(storage map[string]rest.Storage, admissionControl admission.
|
||||
UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme),
|
||||
Defaulter: scheme,
|
||||
Typer: scheme,
|
||||
// TODO(wojtek-t): Switch to Namer.
|
||||
Linker: selfLinker,
|
||||
Namer: namer,
|
||||
RootScopedKinds: sets.NewString("SimpleRoot"),
|
||||
|
||||
EquivalentResourceRegistry: runtime.NewEquivalentResourceRegistry(),
|
||||
@ -3280,7 +3279,7 @@ func TestParentResourceIsRequired(t *testing.T) {
|
||||
UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme),
|
||||
Defaulter: scheme,
|
||||
Typer: scheme,
|
||||
Linker: selfLinker,
|
||||
Namer: namer,
|
||||
RootScopedKinds: sets.NewString("SimpleRoot"),
|
||||
|
||||
EquivalentResourceRegistry: runtime.NewEquivalentResourceRegistry(),
|
||||
@ -3313,7 +3312,7 @@ func TestParentResourceIsRequired(t *testing.T) {
|
||||
UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme),
|
||||
Defaulter: scheme,
|
||||
Typer: scheme,
|
||||
Linker: selfLinker,
|
||||
Namer: namer,
|
||||
|
||||
EquivalentResourceRegistry: runtime.NewEquivalentResourceRegistry(),
|
||||
|
||||
@ -4100,7 +4099,7 @@ func TestXGSubresource(t *testing.T) {
|
||||
UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme),
|
||||
Defaulter: scheme,
|
||||
Typer: scheme,
|
||||
Linker: selfLinker,
|
||||
Namer: namer,
|
||||
|
||||
EquivalentResourceRegistry: runtime.NewEquivalentResourceRegistry(),
|
||||
|
||||
|
@ -79,7 +79,7 @@ type APIGroupVersion struct {
|
||||
Convertor runtime.ObjectConvertor
|
||||
ConvertabilityChecker ConvertabilityChecker
|
||||
Defaulter runtime.ObjectDefaulter
|
||||
Linker runtime.SelfLinker
|
||||
Namer runtime.Namer
|
||||
UnsafeConvertor runtime.ObjectConvertor
|
||||
TypeConverter fieldmanager.TypeConverter
|
||||
|
||||
|
@ -39,7 +39,7 @@ type ScopeNamer interface {
|
||||
}
|
||||
|
||||
type ContextBasedNaming struct {
|
||||
SelfLinker runtime.SelfLinker
|
||||
Namer runtime.Namer
|
||||
ClusterScoped bool
|
||||
|
||||
SelfLinkPathPrefix string
|
||||
@ -70,14 +70,14 @@ func (n ContextBasedNaming) Name(req *http.Request) (namespace, name string, err
|
||||
}
|
||||
|
||||
func (n ContextBasedNaming) ObjectName(obj runtime.Object) (namespace, name string, err error) {
|
||||
name, err = n.SelfLinker.Name(obj)
|
||||
name, err = n.Namer.Name(obj)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
if len(name) == 0 {
|
||||
return "", "", errEmptyName
|
||||
}
|
||||
namespace, err = n.SelfLinker.Namespace(obj)
|
||||
namespace, err = n.Namer.Namespace(obj)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
@ -428,7 +428,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
apiResource.Namespaced = false
|
||||
apiResource.Kind = resourceKind
|
||||
namer := handlers.ContextBasedNaming{
|
||||
SelfLinker: a.group.Linker,
|
||||
Namer: a.group.Namer,
|
||||
ClusterScoped: true,
|
||||
SelfLinkPathPrefix: gpath.Join(a.prefix, resource) + "/",
|
||||
SelfLinkPathSuffix: suffix,
|
||||
@ -477,7 +477,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
apiResource.Namespaced = true
|
||||
apiResource.Kind = resourceKind
|
||||
namer := handlers.ContextBasedNaming{
|
||||
SelfLinker: a.group.Linker,
|
||||
Namer: a.group.Namer,
|
||||
ClusterScoped: false,
|
||||
SelfLinkPathPrefix: gpath.Join(a.prefix, namespaceParamName) + "/",
|
||||
SelfLinkPathSuffix: itemPathSuffix,
|
||||
|
@ -676,7 +676,7 @@ func (s *GenericAPIServer) newAPIGroupVersion(apiGroupInfo *APIGroupInfo, groupV
|
||||
UnsafeConvertor: runtime.UnsafeObjectConvertor(apiGroupInfo.Scheme),
|
||||
Defaulter: apiGroupInfo.Scheme,
|
||||
Typer: apiGroupInfo.Scheme,
|
||||
Linker: runtime.SelfLinker(meta.NewAccessor()),
|
||||
Namer: runtime.Namer(meta.NewAccessor()),
|
||||
|
||||
EquivalentResourceRegistry: s.EquivalentResourceRegistry,
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user