diff --git a/pkg/endpoints/openapi/openapi.go b/pkg/endpoints/openapi/openapi.go index e512f29b3..e3bd028bb 100644 --- a/pkg/endpoints/openapi/openapi.go +++ b/pkg/endpoints/openapi/openapi.go @@ -108,6 +108,18 @@ func (s groupVersionKinds) Less(i, j int) bool { return s[i].Group < s[j].Group } +func (s groupVersionKinds) JSON() []interface{} { + j := []interface{}{} + for _, gvk := range s { + j = append(j, map[string]interface{}{ + "group": gvk.Group, + "version": gvk.Version, + "kind": gvk.Kind, + }) + } + return j +} + // DefinitionNamer is the type to customize OpenAPI definition name. type DefinitionNamer struct { typeGroupVersionKinds map[string]groupVersionKinds @@ -172,7 +184,7 @@ func NewDefinitionNamer(schemes ...*runtime.Scheme) *DefinitionNamer { func (d *DefinitionNamer) GetDefinitionName(name string) (string, spec.Extensions) { if groupVersionKinds, ok := d.typeGroupVersionKinds[name]; ok { return friendlyName(name), spec.Extensions{ - extensionGVK: []v1.GroupVersionKind(groupVersionKinds), + extensionGVK: groupVersionKinds.JSON(), } } return friendlyName(name), nil diff --git a/pkg/endpoints/openapi/openapi_test.go b/pkg/endpoints/openapi/openapi_test.go index fb188fed0..0ebfedeae 100644 --- a/pkg/endpoints/openapi/openapi_test.go +++ b/pkg/endpoints/openapi/openapi_test.go @@ -23,7 +23,6 @@ import ( "github.com/go-openapi/spec" - "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" openapitesting "k8s.io/apiserver/pkg/endpoints/openapi/testing" ) @@ -58,13 +57,13 @@ func TestGetDefinitionName(t *testing.T) { namer := NewDefinitionNamer(s) n, e := namer.GetDefinitionName(typePkgName) assertEqual(t, typeFriendlyName, n) - assertEqual(t, e["x-kubernetes-group-version-kind"], []v1.GroupVersionKind{ - { - Group: "test", - Version: "v1", - Kind: "TestType", + assertEqual(t, []interface{}{ + map[string]interface{}{ + "group": "test", + "version": "v1", + "kind": "TestType", }, - }) + }, e["x-kubernetes-group-version-kind"]) n, e2 := namer.GetDefinitionName("test.com/another.Type") assertEqual(t, "com.test.another.Type", n) assertEqual(t, e2, spec.Extensions(nil)) diff --git a/pkg/server/genericapiserver_test.go b/pkg/server/genericapiserver_test.go index df6b0203c..cd9e57bc2 100644 --- a/pkg/server/genericapiserver_test.go +++ b/pkg/server/genericapiserver_test.go @@ -89,18 +89,18 @@ func buildTestOpenAPIDefinition() kubeopenapi.OpenAPIDefinition { }, VendorExtensible: openapi.VendorExtensible{ Extensions: openapi.Extensions{ - "x-kubernetes-group-version-kind": []map[string]string{ - { + "x-kubernetes-group-version-kind": []interface{}{ + map[string]interface{}{ "group": "", "version": "v1", "kind": "Getter", }, - { + map[string]interface{}{ "group": "batch", "version": "v1", "kind": "Getter", }, - { + map[string]interface{}{ "group": "extensions", "version": "v1", "kind": "Getter", diff --git a/pkg/util/openapi/proto_test.go b/pkg/util/openapi/proto_test.go index d4ee737ca..4fbd63f18 100644 --- a/pkg/util/openapi/proto_test.go +++ b/pkg/util/openapi/proto_test.go @@ -44,8 +44,8 @@ func TestOpenAPIDefinitionsToProtoModels(t *testing.T) { }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ - "x-kubernetes-group-version-kind": []map[string]string{ - { + "x-kubernetes-group-version-kind": []interface{}{ + map[string]interface{}{ "group": "testgroup.k8s.io", "version": "v1", "kind": "Foo",