diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index f57a6a8c5..933e5f2a2 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -312,211 +312,211 @@ }, { "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/testing", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/openapi", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/rand", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "0b160d81c3788c4d2050dfd0bd4d42eae448388b" + "Rev": "7c52ae47c4b9ce83b70f4f6f0c2f19cdb4db2734" } ] } diff --git a/discovery/restmapper.go b/discovery/restmapper.go index 9651716bd..6d1de8c1b 100644 --- a/discovery/restmapper.go +++ b/discovery/restmapper.go @@ -96,8 +96,19 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V if !resource.Namespaced { scope = meta.RESTScopeRoot } - versionMapper.Add(gv.WithKind(resource.Kind), scope) - // TODO only do this if it supports listing + + // this is for legacy resources and servers which don't list singular forms. For those we must still guess. + if len(resource.SingularName) == 0 { + versionMapper.Add(gv.WithKind(resource.Kind), scope) + // TODO this is producing unsafe guesses that don't actually work, but it matches previous behavior + versionMapper.Add(gv.WithKind(resource.Kind+"List"), scope) + continue + } + + plural := gv.WithResource(resource.Name) + singular := gv.WithResource(resource.SingularName) + versionMapper.AddSpecific(gv.WithKind(resource.Kind), plural, singular, scope) + // TODO this is producing unsafe guesses that don't actually work, but it matches previous behavior versionMapper.Add(gv.WithKind(resource.Kind+"List"), scope) } // TODO why is this type not in discovery (at least for "v1")