From 2ffd56c23b7f734a09627df835b327bf93d5001f Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 30 Jan 2024 15:17:14 -0800 Subject: [PATCH] K8s: Improve OpenAPI behaviour (#81606) --- pkg/services/grafana-apiserver/helper.go | 14 ++++++++++++++ public/views/swagger.html | 1 + 2 files changed, 15 insertions(+) diff --git a/pkg/services/grafana-apiserver/helper.go b/pkg/services/grafana-apiserver/helper.go index 2bceed7c52d..8205715487f 100644 --- a/pkg/services/grafana-apiserver/helper.go +++ b/pkg/services/grafana-apiserver/helper.go @@ -7,12 +7,14 @@ import ( "strings" "time" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/version" openapinamer "k8s.io/apiserver/pkg/endpoints/openapi" "k8s.io/apiserver/pkg/registry/generic" genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/util/openapi" "k8s.io/client-go/kubernetes/scheme" + "k8s.io/kube-openapi/pkg/common" "github.com/grafana/grafana/pkg/setting" ) @@ -27,6 +29,18 @@ func SetupConfig(serverConfig *genericapiserver.RecommendedConfig, builders []AP openapi.GetOpenAPIDefinitionsWithoutDisabledFeatures(defsGetter), openapinamer.NewDefinitionNamer(Scheme, scheme.Scheme)) + serverConfig.OpenAPIV3Config.GetOperationIDAndTagsFromRoute = func(r common.Route) (string, []string, error) { + tags := []string{} + prop, ok := r.Metadata()["x-kubernetes-group-version-kind"] + if ok { + gvk, ok := prop.(metav1.GroupVersionKind) + if ok && gvk.Kind != "" { + tags = append(tags, gvk.Kind) + } + } + return r.OperationName(), tags, nil + } + // Add the custom routes to service discovery serverConfig.OpenAPIV3Config.PostProcessSpec = getOpenAPIPostProcessor(builders) diff --git a/public/views/swagger.html b/public/views/swagger.html index a0b5f90727e..4b56f31731f 100644 --- a/public/views/swagger.html +++ b/public/views/swagger.html @@ -98,6 +98,7 @@ filter: true, tagsSorter: 'alpha', tryItOutEnabled: true, + queryConfigEnabled: true, // keeps the selected ?urls.primaryName=... }); window.ui = ui;