APIServer: Exclude internal GroupVersionKind from openapi (#107551)

This commit is contained in:
Ryan McKinley
2025-07-02 19:32:01 -07:00
committed by GitHub
parent 41eb49ad03
commit acabe86153
8 changed files with 30 additions and 222 deletions
+30 -7
View File
@@ -4,21 +4,23 @@ import (
"maps"
"strings"
common "k8s.io/kube-openapi/pkg/common"
openapi "k8s.io/kube-openapi/pkg/common"
"k8s.io/kube-openapi/pkg/spec3"
spec "k8s.io/kube-openapi/pkg/validation/spec"
data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1"
"github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
secret "github.com/grafana/grafana/pkg/apis/secret/v0alpha1"
)
// This should eventually live in grafana-app-sdk
func GetOpenAPIDefinitions(builders []APIGroupBuilder) common.GetOpenAPIDefinitions {
return func(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
defs := v0alpha1.GetOpenAPIDefinitions(ref) // common grafana apis
func GetOpenAPIDefinitions(builders []APIGroupBuilder) openapi.GetOpenAPIDefinitions {
return func(ref openapi.ReferenceCallback) map[string]openapi.OpenAPIDefinition {
defs := common.GetOpenAPIDefinitions(ref) // common grafana apis
maps.Copy(defs, data.GetOpenAPIDefinitions(ref))
maps.Copy(defs, secret.GetOpenAPIDefinitions(ref)) // Expose secret reference to all resources
// TODO: add timerange to upstream SDK setup
maps.Copy(defs, map[string]common.OpenAPIDefinition{
maps.Copy(defs, map[string]openapi.OpenAPIDefinition{
"github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1.TimeRange": {
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -117,8 +119,29 @@ func getOpenAPIPostProcessor(version string, builders []APIGroupBuilder) func(*s
// Remove the growing list of kinds
for k, v := range copy.Components.Schemas {
if strings.HasPrefix(k, "io.k8s.apimachinery.pkg.apis.meta.v1") && v.Extensions != nil {
if v.Extensions == nil {
continue
}
if strings.HasPrefix(k, "io.k8s.apimachinery.pkg.apis.meta.v1") {
delete(v.Extensions, "x-kubernetes-group-version-kind") // a growing list of everything
continue
}
// Remove the internal annotations
val, ok := v.Extensions["x-kubernetes-group-version-kind"]
if ok {
gvks, ok := val.([]any)
if ok {
keep := make([]map[string]any, 0, len(gvks))
for _, val := range gvks {
gvk, ok := val.(map[string]any)
if ok && gvk["version"] == "__internal" {
continue
}
keep = append(keep, gvk)
}
v.Extensions["x-kubernetes-group-version-kind"] = keep
}
}
}
@@ -1740,11 +1740,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "advisor.grafana.app",
"kind": "Check",
"version": "__internal"
},
{
"group": "advisor.grafana.app",
"kind": "Check",
@@ -1807,11 +1802,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "advisor.grafana.app",
"kind": "CheckList",
"version": "__internal"
},
{
"group": "advisor.grafana.app",
"kind": "CheckList",
@@ -1957,11 +1947,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "advisor.grafana.app",
"kind": "CheckType",
"version": "__internal"
},
{
"group": "advisor.grafana.app",
"kind": "CheckType",
@@ -2005,11 +1990,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "advisor.grafana.app",
"kind": "CheckTypeList",
"version": "__internal"
},
{
"group": "advisor.grafana.app",
"kind": "CheckTypeList",
@@ -1043,11 +1043,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "folder.grafana.app",
"kind": "DescendantCounts",
"version": "__internal"
},
{
"group": "folder.grafana.app",
"kind": "DescendantCounts",
@@ -1098,11 +1093,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "folder.grafana.app",
"kind": "Folder",
"version": "__internal"
},
{
"group": "folder.grafana.app",
"kind": "Folder",
@@ -1146,11 +1136,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "folder.grafana.app",
"kind": "FolderAccessInfo",
"version": "__internal"
},
{
"group": "folder.grafana.app",
"kind": "FolderAccessInfo",
@@ -1230,11 +1215,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "folder.grafana.app",
"kind": "FolderInfoList",
"version": "__internal"
},
{
"group": "folder.grafana.app",
"kind": "FolderInfoList",
@@ -1278,11 +1258,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "folder.grafana.app",
"kind": "FolderList",
"version": "__internal"
},
{
"group": "folder.grafana.app",
"kind": "FolderList",
@@ -1824,11 +1824,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "SSOSetting",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "SSOSetting",
@@ -1871,11 +1866,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "SSOSettingList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "SSOSettingList",
@@ -1934,11 +1924,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "ServiceAccount",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "ServiceAccount",
@@ -1981,11 +1966,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "ServiceAccountList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "ServiceAccountList",
@@ -2075,11 +2055,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "Team",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "Team",
@@ -2116,11 +2091,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "TeamBinding",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "TeamBinding",
@@ -2163,11 +2133,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "TeamBindingList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "TeamBindingList",
@@ -2234,11 +2199,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "TeamList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "TeamList",
@@ -2324,11 +2284,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "TeamMemberList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "TeamMemberList",
@@ -2410,11 +2365,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "User",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "User",
@@ -2457,11 +2407,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "UserList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "UserList",
@@ -2548,11 +2493,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "iam.grafana.app",
"kind": "UserTeamList",
"version": "__internal"
},
{
"group": "iam.grafana.app",
"kind": "UserTeamList",
@@ -1741,11 +1741,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "investigations.grafana.app",
"kind": "Investigation",
"version": "__internal"
},
{
"group": "investigations.grafana.app",
"kind": "Investigation",
@@ -1892,11 +1887,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "investigations.grafana.app",
"kind": "InvestigationIndex",
"version": "__internal"
},
{
"group": "investigations.grafana.app",
"kind": "InvestigationIndex",
@@ -2031,11 +2021,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "investigations.grafana.app",
"kind": "InvestigationIndexList",
"version": "__internal"
},
{
"group": "investigations.grafana.app",
"kind": "InvestigationIndexList",
@@ -2218,11 +2203,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "investigations.grafana.app",
"kind": "InvestigationList",
"version": "__internal"
},
{
"group": "investigations.grafana.app",
"kind": "InvestigationList",
@@ -3401,11 +3401,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "Receiver",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "Receiver",
@@ -3481,11 +3476,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "ReceiverList",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "ReceiverList",
@@ -3614,11 +3604,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "RoutingTree",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "RoutingTree",
@@ -3662,11 +3647,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "RoutingTreeList",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "RoutingTreeList",
@@ -3916,11 +3896,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "TemplateGroup",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "TemplateGroup",
@@ -3964,11 +3939,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "TemplateGroupList",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "TemplateGroupList",
@@ -4090,11 +4060,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "TimeInterval",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "TimeInterval",
@@ -4185,11 +4150,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "notifications.alerting.grafana.app",
"kind": "TimeIntervalList",
"version": "__internal"
},
{
"group": "notifications.alerting.grafana.app",
"kind": "TimeIntervalList",
@@ -911,11 +911,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "playlist.grafana.app",
"kind": "Playlist",
"version": "__internal"
},
{
"group": "playlist.grafana.app",
"kind": "Playlist",
@@ -978,11 +973,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "playlist.grafana.app",
"kind": "PlaylistList",
"version": "__internal"
},
{
"group": "playlist.grafana.app",
"kind": "PlaylistList",
@@ -2776,11 +2776,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "Job",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "Job",
@@ -2823,11 +2818,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "JobList",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "JobList",
@@ -3085,11 +3075,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "Repository",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "Repository",
@@ -3133,11 +3118,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "RepositoryList",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "RepositoryList",
@@ -3426,11 +3406,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "ResourceList",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "ResourceList",
@@ -3737,11 +3712,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "ResourceWrapper",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "ResourceWrapper",
@@ -3887,11 +3857,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "TestResults",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "TestResults",
@@ -3929,11 +3894,6 @@
}
},
"x-kubernetes-group-version-kind": [
{
"group": "provisioning.grafana.app",
"kind": "WebhookResponse",
"version": "__internal"
},
{
"group": "provisioning.grafana.app",
"kind": "WebhookResponse",