From 7395acc6da341eea1474c9de7ed9111dfb7312b7 Mon Sep 17 00:00:00 2001 From: deads2k Date: Tue, 28 Feb 2017 14:31:31 -0500 Subject: [PATCH] discovery restmapping should always prefer /v1 Kubernetes-commit: 49f8a37c6488c40c6533cc908467b05038c7ef24 --- discovery/restmapper.go | 5 ++-- discovery/restmapper_test.go | 47 +++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/discovery/restmapper.go b/discovery/restmapper.go index de2ec139..9b0769a1 100644 --- a/discovery/restmapper.go +++ b/discovery/restmapper.go @@ -43,8 +43,9 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V unionMapper := meta.MultiRESTMapper{} var groupPriority []string - var resourcePriority []schema.GroupVersionResource - var kindPriority []schema.GroupVersionKind + // /v1 is special. It should always come first + resourcePriority := []schema.GroupVersionResource{{Group: "", Version: "v1", Resource: meta.AnyResource}} + kindPriority := []schema.GroupVersionKind{{Group: "", Version: "v1", Kind: meta.AnyKind}} for _, group := range groupResources { groupPriority = append(groupPriority, group.Group.Name) diff --git a/discovery/restmapper_test.go b/discovery/restmapper_test.go index 7be1a990..523fdefd 100644 --- a/discovery/restmapper_test.go +++ b/discovery/restmapper_test.go @@ -35,6 +35,21 @@ import ( func TestRESTMapper(t *testing.T) { resources := []*APIGroupResources{ + { + Group: metav1.APIGroup{ + Name: "extensions", + Versions: []metav1.GroupVersionForDiscovery{ + {Version: "v1beta"}, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{Version: "v1beta"}, + }, + VersionedResources: map[string][]metav1.APIResource{ + "v1beta": { + {Name: "jobs", Namespaced: true, Kind: "Job"}, + {Name: "pods", Namespaced: true, Kind: "Pod"}, + }, + }, + }, { Group: metav1.APIGroup{ Versions: []metav1.GroupVersionForDiscovery{ @@ -52,20 +67,6 @@ func TestRESTMapper(t *testing.T) { }, }, }, - { - Group: metav1.APIGroup{ - Name: "extensions", - Versions: []metav1.GroupVersionForDiscovery{ - {Version: "v1beta"}, - }, - PreferredVersion: metav1.GroupVersionForDiscovery{Version: "v1beta"}, - }, - VersionedResources: map[string][]metav1.APIResource{ - "v1beta": { - {Name: "jobs", Namespaced: true, Kind: "Job"}, - }, - }, - }, } restMapper := NewRESTMapper(resources, nil) @@ -74,6 +75,15 @@ func TestRESTMapper(t *testing.T) { input schema.GroupVersionResource want schema.GroupVersionKind }{ + { + input: schema.GroupVersionResource{ + Resource: "pods", + }, + want: schema.GroupVersionKind{ + Version: "v1", + Kind: "Pod", + }, + }, { input: schema.GroupVersionResource{ Version: "v1", @@ -131,6 +141,15 @@ func TestRESTMapper(t *testing.T) { input schema.GroupVersionResource want schema.GroupVersionResource }{ + { + input: schema.GroupVersionResource{ + Resource: "pods", + }, + want: schema.GroupVersionResource{ + Version: "v1", + Resource: "pods", + }, + }, { input: schema.GroupVersionResource{ Version: "v1",