mirror of https://github.com/k3s-io/k3s
apiserver: fix openapi extension types to be JSON
parent
01bc4eff0e
commit
e67d5f2d8d
|
@ -11,7 +11,6 @@ go_test(
|
|||
srcs = ["openapi_test.go"],
|
||||
embed = [":go_default_library"],
|
||||
deps = [
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing:go_default_library",
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue