Plugins: Support MT app registration (#113348)

This commit is contained in:
Todd Treece
2025-12-02 09:59:46 -05:00
committed by GitHub
parent 77e13f7ef8
commit bdf529c545
22 changed files with 385 additions and 240 deletions
+39
View File
@@ -0,0 +1,39 @@
package app
import (
"fmt"
restful "github.com/emicklei/go-restful/v3"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/registry/rest"
genericserver "k8s.io/apiserver/pkg/server"
appsdkapiserver "github.com/grafana/grafana-app-sdk/k8s/apiserver"
)
var _ appsdkapiserver.GenericAPIServer = (*customStorageWrapper)(nil)
type customStorageWrapper struct {
wrapped appsdkapiserver.GenericAPIServer
replace map[schema.GroupVersionResource]rest.Storage
}
func (c *customStorageWrapper) InstallAPIGroup(
apiGroupInfo *genericserver.APIGroupInfo,
) error {
if apiGroupInfo == nil || apiGroupInfo.VersionedResourcesStorageMap == nil {
return fmt.Errorf("apiGroupInfo cannot be nil")
}
for gvr, storage := range c.replace {
if _, ok := apiGroupInfo.VersionedResourcesStorageMap[gvr.Version]; !ok {
apiGroupInfo.VersionedResourcesStorageMap[gvr.Version] = map[string]rest.Storage{}
}
apiGroupInfo.VersionedResourcesStorageMap[gvr.Version][gvr.Resource] = storage
}
return c.wrapped.InstallAPIGroup(apiGroupInfo)
}
// RegisteredWebServices implements apiserver.GenericAPIServer.
func (c *customStorageWrapper) RegisteredWebServices() []*restful.WebService {
return []*restful.WebService{}
}