mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
K8s: Make it possible to register several kinds for a GroupVersion (#97161)
* Make it possible to register several kinds for a GroupVersion
This commit is contained in:
parent
c5d3f8644e
commit
d64c938749
@ -76,12 +76,12 @@ func New(cfg app.Config) (app.App, error) {
|
||||
return a, nil
|
||||
}
|
||||
|
||||
func GetKinds() map[schema.GroupVersion]resource.Kind {
|
||||
func GetKinds() map[schema.GroupVersion][]resource.Kind {
|
||||
gv := schema.GroupVersion{
|
||||
Group: playlistv0alpha1.PlaylistKind().Group(),
|
||||
Version: playlistv0alpha1.PlaylistKind().Version(),
|
||||
}
|
||||
return map[schema.GroupVersion]resource.Kind{
|
||||
gv: playlistv0alpha1.PlaylistKind(),
|
||||
return map[schema.GroupVersion][]resource.Kind{
|
||||
gv: {playlistv0alpha1.PlaylistKind()},
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ type AppBuilderConfig struct {
|
||||
Authorizer authorizer.Authorizer
|
||||
LegacyStorageGetter LegacyStorageGetter
|
||||
OpenAPIDefGetter common.GetOpenAPIDefinitions
|
||||
ManagedKinds map[schema.GroupVersion]resource.Kind
|
||||
ManagedKinds map[schema.GroupVersion][]resource.Kind
|
||||
CustomConfig any
|
||||
|
||||
groupVersion schema.GroupVersion
|
||||
@ -60,26 +60,30 @@ func (b *appBuilder) GetGroupVersion() schema.GroupVersion {
|
||||
// InstallSchema implements APIGroupBuilder.InstallSchema
|
||||
func (b *appBuilder) InstallSchema(scheme *runtime.Scheme) error {
|
||||
gv := b.GetGroupVersion()
|
||||
for _, kind := range b.config.ManagedKinds {
|
||||
scheme.AddKnownTypeWithName(gv.WithKind(kind.Kind()), kind.ZeroValue())
|
||||
scheme.AddKnownTypeWithName(gv.WithKind(kind.Kind()+"List"), kind.ZeroListValue())
|
||||
for _, kinds := range b.config.ManagedKinds {
|
||||
for _, kind := range kinds {
|
||||
scheme.AddKnownTypeWithName(gv.WithKind(kind.Kind()), kind.ZeroValue())
|
||||
scheme.AddKnownTypeWithName(gv.WithKind(kind.Kind()+"List"), kind.ZeroListValue())
|
||||
}
|
||||
}
|
||||
return scheme.SetVersionPriority(gv)
|
||||
}
|
||||
|
||||
// UpdateAPIGroupInfo implements APIGroupBuilder.UpdateAPIGroupInfo
|
||||
func (b *appBuilder) UpdateAPIGroupInfo(apiGroupInfo *genericapiserver.APIGroupInfo, opts builder.APIGroupOptions) error {
|
||||
for _, kind := range b.config.ManagedKinds {
|
||||
version := kind.GroupVersionKind().Version
|
||||
if _, ok := apiGroupInfo.VersionedResourcesStorageMap[version]; !ok {
|
||||
apiGroupInfo.VersionedResourcesStorageMap[version] = make(map[string]rest.Storage)
|
||||
for _, kinds := range b.config.ManagedKinds {
|
||||
for _, kind := range kinds {
|
||||
version := kind.GroupVersionKind().Version
|
||||
if _, ok := apiGroupInfo.VersionedResourcesStorageMap[version]; !ok {
|
||||
apiGroupInfo.VersionedResourcesStorageMap[version] = make(map[string]rest.Storage)
|
||||
}
|
||||
resourceInfo := KindToResourceInfo(kind)
|
||||
store, err := b.getStorage(resourceInfo, opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
apiGroupInfo.VersionedResourcesStorageMap[version][resourceInfo.StoragePath()] = store
|
||||
}
|
||||
resourceInfo := KindToResourceInfo(kind)
|
||||
store, err := b.getStorage(resourceInfo, opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
apiGroupInfo.VersionedResourcesStorageMap[version][resourceInfo.StoragePath()] = store
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ func newAppBuilderGroup(cfg RunnerConfig, provider app.Provider) (appBuilderGrou
|
||||
|
||||
for gv, kinds := range appBuilderConfig.ManagedKinds {
|
||||
confCopy := *appBuilderConfig
|
||||
confCopy.ManagedKinds = map[schema.GroupVersion]resource.Kind{
|
||||
confCopy.ManagedKinds = map[schema.GroupVersion][]resource.Kind{
|
||||
gv: kinds,
|
||||
}
|
||||
confCopy.groupVersion = gv
|
||||
|
Loading…
Reference in New Issue
Block a user