Merge remote-tracking branch 'origin/master' into release-1.8

Kubernetes-commit: 783e2305f10d452b0549578535350cda83649f6c
This commit is contained in:
Kubernetes Publisher
2017-09-12 17:25:11 -07:00
3 changed files with 77 additions and 25 deletions

50
Godeps/Godeps.json generated
View File

@@ -376,103 +376,103 @@
},
{
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/apps/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/apps/v1beta2",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/authentication/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/authentication/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/authorization/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/authorization/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/autoscaling/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/batch/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/batch/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/batch/v2alpha1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/certificates/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/core/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/extensions/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/imagepolicy/v1alpha1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/networking/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/policy/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/rbac/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/rbac/v1alpha1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/rbac/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/settings/v1alpha1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/storage/v1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/api/storage/v1beta1",
"Rev": "07b4b4eaaae3ae86db8b37558fb20a61933ea428"
"Rev": "79875ce1be3143a6a7e07c40b8cbab654b247233"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",

View File

@@ -49,6 +49,7 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V
for _, group := range groupResources {
groupPriority = append(groupPriority, group.Group.Name)
// Make sure the preferred version comes first
if len(group.Group.PreferredVersion.Version) != 0 {
preferred := group.Group.PreferredVersion.Version
if _, ok := group.VersionedResources[preferred]; ok {
@@ -72,6 +73,21 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V
continue
}
// Add non-preferred versions after the preferred version, in case there are resources that only exist in those versions
if discoveryVersion.Version != group.Group.PreferredVersion.Version {
resourcePriority = append(resourcePriority, schema.GroupVersionResource{
Group: group.Group.Name,
Version: discoveryVersion.Version,
Resource: meta.AnyResource,
})
kindPriority = append(kindPriority, schema.GroupVersionKind{
Group: group.Group.Name,
Version: discoveryVersion.Version,
Kind: meta.AnyKind,
})
}
gv := schema.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version}
versionMapper := meta.NewDefaultRESTMapper([]schema.GroupVersion{gv}, versionInterfaces)

View File

@@ -67,6 +67,32 @@ func TestRESTMapper(t *testing.T) {
},
},
},
// This group tests finding and prioritizing resources that only exist in non-preferred versions
{
Group: metav1.APIGroup{
Name: "unpreferred",
Versions: []metav1.GroupVersionForDiscovery{
{Version: "v1"},
{Version: "v2beta1"},
{Version: "v2alpha1"},
},
PreferredVersion: metav1.GroupVersionForDiscovery{Version: "v1"},
},
VersionedResources: map[string][]metav1.APIResource{
"v1": {
{Name: "broccoli", Namespaced: true, Kind: "Broccoli"},
},
"v2beta1": {
{Name: "broccoli", Namespaced: true, Kind: "Broccoli"},
{Name: "peas", Namespaced: true, Kind: "Pea"},
},
"v2alpha1": {
{Name: "broccoli", Namespaced: true, Kind: "Broccoli"},
{Name: "peas", Namespaced: true, Kind: "Pea"},
},
},
},
}
restMapper := NewRESTMapper(resources, nil)
@@ -123,6 +149,16 @@ func TestRESTMapper(t *testing.T) {
Kind: "Job",
},
},
{
input: schema.GroupVersionResource{
Resource: "peas",
},
want: schema.GroupVersionKind{
Group: "unpreferred",
Version: "v2beta1",
Kind: "Pea",
},
},
}
for _, tc := range kindTCs {