Correctly identify types served in the kube-apiserver openapi doc
Kubernetes-commit: 43551e82081a1fa364879bd49e67095a3fc0926b
This commit is contained in:
parent
ebf9b0d7b7
commit
4645ab9a4c
|
|
@ -143,12 +143,24 @@ func typeName(t reflect.Type) string {
|
|||
}
|
||||
|
||||
// NewDefinitionNamer constructs a new DefinitionNamer to be used to customize OpenAPI spec.
|
||||
func NewDefinitionNamer(s *runtime.Scheme) DefinitionNamer {
|
||||
ret := DefinitionNamer{
|
||||
func NewDefinitionNamer(schemes ...*runtime.Scheme) *DefinitionNamer {
|
||||
ret := &DefinitionNamer{
|
||||
typeGroupVersionKinds: map[string]groupVersionKinds{},
|
||||
}
|
||||
for gvk, rtype := range s.AllKnownTypes() {
|
||||
ret.typeGroupVersionKinds[typeName(rtype)] = append(ret.typeGroupVersionKinds[typeName(rtype)], gvkConvert(gvk))
|
||||
for _, s := range schemes {
|
||||
for gvk, rtype := range s.AllKnownTypes() {
|
||||
newGVK := gvkConvert(gvk)
|
||||
exists := false
|
||||
for _, existingGVK := range ret.typeGroupVersionKinds[typeName(rtype)] {
|
||||
if newGVK == existingGVK {
|
||||
exists = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !exists {
|
||||
ret.typeGroupVersionKinds[typeName(rtype)] = append(ret.typeGroupVersionKinds[typeName(rtype)], newGVK)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, gvk := range ret.typeGroupVersionKinds {
|
||||
sort.Sort(gvk)
|
||||
|
|
|
|||
|
|
@ -278,8 +278,7 @@ func NewRecommendedConfig(codecs serializer.CodecFactory) *RecommendedConfig {
|
|||
}
|
||||
}
|
||||
|
||||
func DefaultOpenAPIConfig(getDefinitions openapicommon.GetOpenAPIDefinitions, scheme *runtime.Scheme) *openapicommon.Config {
|
||||
defNamer := apiopenapi.NewDefinitionNamer(scheme)
|
||||
func DefaultOpenAPIConfig(getDefinitions openapicommon.GetOpenAPIDefinitions, defNamer *apiopenapi.DefinitionNamer) *openapicommon.Config {
|
||||
return &openapicommon.Config{
|
||||
ProtocolList: []string{"https"},
|
||||
IgnorePrefixes: []string{"/swaggerapi"},
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import (
|
|||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||
"k8s.io/apiserver/pkg/endpoints/discovery"
|
||||
genericapifilters "k8s.io/apiserver/pkg/endpoints/filters"
|
||||
openapinamer "k8s.io/apiserver/pkg/endpoints/openapi"
|
||||
"k8s.io/apiserver/pkg/registry/rest"
|
||||
genericfilters "k8s.io/apiserver/pkg/server/filters"
|
||||
"k8s.io/client-go/informers"
|
||||
|
|
@ -95,7 +96,7 @@ func setUp(t *testing.T) (Config, *assert.Assertions) {
|
|||
t.Fatal("unable to create fake client set")
|
||||
}
|
||||
|
||||
config.OpenAPIConfig = DefaultOpenAPIConfig(testGetOpenAPIDefinitions, runtime.NewScheme())
|
||||
config.OpenAPIConfig = DefaultOpenAPIConfig(testGetOpenAPIDefinitions, openapinamer.NewDefinitionNamer(runtime.NewScheme()))
|
||||
config.OpenAPIConfig.Info.Version = "unversioned"
|
||||
config.SwaggerConfig = DefaultSwaggerConfig()
|
||||
sharedInformers := informers.NewSharedInformerFactory(clientset, config.LoopbackClientConfig.Timeout)
|
||||
|
|
|
|||
Loading…
Reference in New Issue