diff --git a/go.mod b/go.mod index dd2d160b3..a805aeb8a 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( kmodules.xyz/custom-resources v0.29.1 kmodules.xyz/go-containerregistry v0.0.12 kmodules.xyz/monitoring-agent-api v0.29.0 - kmodules.xyz/resource-metadata v0.18.4-0.20240507203038-74ed30e3192f + kmodules.xyz/resource-metadata v0.18.4-0.20240508091636-af957419033d kmodules.xyz/resource-metrics v0.29.5 kmodules.xyz/sets v0.29.0 kubeops.dev/falco-ui-server v0.0.3 diff --git a/go.sum b/go.sum index f4a204fe2..7bf9e699e 100644 --- a/go.sum +++ b/go.sum @@ -3490,8 +3490,8 @@ kmodules.xyz/monitoring-agent-api v0.29.0 h1:gpFl6OZrlMLb/ySMHdREI9EwGtnJ91oZBn9 kmodules.xyz/monitoring-agent-api v0.29.0/go.mod h1:iNbvaMTgVFOI5q2LJtGK91j4Dmjv4ZRiRdasGmWLKQI= kmodules.xyz/offshoot-api v0.29.0 h1:GHLhxxT9jU1N8+FvOCCeJNyU5g0duYS46UGrs6AHNLY= kmodules.xyz/offshoot-api v0.29.0/go.mod h1:5NxhBblXoDHWStx9HCDJR2KFTwYjEZ7i1Id3jelIunw= -kmodules.xyz/resource-metadata v0.18.4-0.20240507203038-74ed30e3192f h1:ANis2aCNRIL/SJJoS9IiV9T3oaYIbjbgFVv0TfEar8s= -kmodules.xyz/resource-metadata v0.18.4-0.20240507203038-74ed30e3192f/go.mod h1:HY6FmDDzQOEHfIEHRiqwNXVyof3uRIDtLSu0Yi1mIBw= +kmodules.xyz/resource-metadata v0.18.4-0.20240508091636-af957419033d h1:bx0zkG52i/zispkGB9gudcqVuoawzeeGs6p8P9Js5s4= +kmodules.xyz/resource-metadata v0.18.4-0.20240508091636-af957419033d/go.mod h1:HY6FmDDzQOEHfIEHRiqwNXVyof3uRIDtLSu0Yi1mIBw= kmodules.xyz/resource-metrics v0.29.5 h1:ciuvRXuXsloLNW/JwkubqbYySsvHvHr6/nhkTL5Sf1o= kmodules.xyz/resource-metrics v0.29.5/go.mod h1:OuG/QobZ7o8GFHl/u3lqaUR0fDZDegxtV8Vdh+MNBD4= kmodules.xyz/sets v0.29.0 h1:ZX/qOECzUob95JhhRtngJElHSlJ1UNNdwK4hTEy+nl0= diff --git a/pkg/menu/accordion_menu.go b/pkg/menu/accordion_menu.go index 3b44ca687..676f5ea72 100644 --- a/pkg/menu/accordion_menu.go +++ b/pkg/menu/accordion_menu.go @@ -34,7 +34,7 @@ import ( helmshared "x-helm.dev/apimachinery/apis/shared" ) -func RenderAccordionMenu(kc client.Client, disco discovery.ServerResourcesInterface, menuName string) (*rsapi.Menu, error) { +func RenderAccordionMenu(kc client.Client, disco discovery.DiscoveryInterface, menuName string) (*rsapi.Menu, error) { mo, err := menuoutlines.LoadByName(menuName) if err != nil { return nil, err @@ -76,14 +76,15 @@ func RenderAccordionMenu(kc client.Client, disco discovery.ServerResourcesInterf items := make([]rsapi.MenuItem, 0, len(so.Items)) for _, item := range so.Items { mi := rsapi.MenuItem{ - Name: item.Name, - Path: item.Path, - Resource: nil, - Missing: true, - Required: item.Required, - LayoutName: item.LayoutName, - Icons: item.Icons, - Installer: nil, + Name: item.Name, + Path: item.Path, + Resource: nil, + Missing: true, + Required: item.Required, + LayoutName: item.LayoutName, + Icons: item.Icons, + Installer: nil, + FeatureMode: item.FeatureMode, } if item.Type != nil { diff --git a/pkg/menu/coomplete_menu.go b/pkg/menu/coomplete_menu.go index 6f101fa06..babad7d4d 100644 --- a/pkg/menu/coomplete_menu.go +++ b/pkg/menu/coomplete_menu.go @@ -38,7 +38,7 @@ var defaultIcons = []helmshared.ImageSpec{ }, } -func GenerateCompleteMenu(kc client.Client, disco discovery.ServerResourcesInterface) (*rsapi.Menu, error) { +func GenerateCompleteMenu(kc client.Client, disco discovery.DiscoveryInterface) (*rsapi.Menu, error) { sectionIcons := map[string][]helmshared.ImageSpec{} for _, m := range menuoutlines.List() { for _, sec := range m.Spec.Sections { diff --git a/pkg/menu/gallery_menu.go b/pkg/menu/gallery_menu.go index c1bf23b3e..8b6cd15e8 100644 --- a/pkg/menu/gallery_menu.go +++ b/pkg/menu/gallery_menu.go @@ -20,8 +20,13 @@ import ( "fmt" "sort" + "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "kmodules.xyz/client-go/meta" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/discovery" + "k8s.io/client-go/discovery/cached/memory" + "k8s.io/client-go/restmapper" + mu "kmodules.xyz/client-go/meta" rsapi "kmodules.xyz/resource-metadata/apis/meta/v1alpha1" "kmodules.xyz/resource-metadata/hub/resourceeditors" "sigs.k8s.io/controller-runtime/pkg/client" @@ -32,10 +37,12 @@ func GetGalleryMenu(driver *UserMenuDriver, opts *rsapi.RenderMenuRequest) (*rsa if err != nil { return nil, err } - return RenderGalleryMenu(driver.GetClient(), menu, opts) + return RenderGalleryMenu(driver.GetClient(), driver.disco, menu, opts) } -func RenderGalleryMenu(kc client.Client, in *rsapi.Menu, opts *rsapi.RenderMenuRequest) (*rsapi.Menu, error) { +func RenderGalleryMenu(kc client.Client, disco discovery.DiscoveryInterface, in *rsapi.Menu, opts *rsapi.RenderMenuRequest) (*rsapi.Menu, error) { + mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(disco)) + out := rsapi.Menu{ TypeMeta: metav1.TypeMeta{ APIVersion: rsapi.SchemeGroupVersion.String(), @@ -56,14 +63,15 @@ func RenderGalleryMenu(kc client.Client, in *rsapi.Menu, opts *rsapi.RenderMenuR items := make([]rsapi.MenuItem, 0) for _, item := range so.Items { mi := rsapi.MenuItem{ - Name: item.Name, - Path: item.Path, - Resource: item.Resource, - Missing: item.Missing, - Required: item.Required, - LayoutName: item.LayoutName, - Icons: item.Icons, - Installer: item.Installer, + Name: item.Name, + Path: item.Path, + Resource: item.Resource, + Missing: item.Missing, + Required: item.Required, + LayoutName: item.LayoutName, + Icons: item.Icons, + Installer: item.Installer, + FeatureMode: item.FeatureMode, } if mi.Resource != nil && @@ -71,6 +79,9 @@ func RenderGalleryMenu(kc client.Client, in *rsapi.Menu, opts *rsapi.RenderMenuR (opts.Type.Group != mi.Resource.Group || opts.Type.Kind != mi.Resource.Kind) { continue } + if mi.Resource.Kind != "" && !gkExists(mapper, item.Resource.GroupKind()) { + mi.Missing = true + } ed, ok := resourceeditors.LoadByResourceID(kc, mi.Resource) if !ok || ed.Spec.UI == nil || ed.Spec.UI.Options == nil || len(ed.Spec.Variants) == 0 { @@ -84,7 +95,7 @@ func RenderGalleryMenu(kc client.Client, in *rsapi.Menu, opts *rsapi.RenderMenuR chartRef := ed.Spec.UI.Options if chartRef.SourceRef.Namespace == "" { - chartRef.SourceRef.Namespace = meta.PodNamespace() + chartRef.SourceRef.Namespace = mu.PodNamespace() } for _, ref := range ed.Spec.Variants { @@ -118,3 +129,13 @@ func RenderGalleryMenu(kc client.Client, in *rsapi.Menu, opts *rsapi.RenderMenuR return &out, nil } + +func gkExists(mapper meta.RESTMapper, gk schema.GroupKind) bool { + if _, err := mapper.RESTMappings(schema.GroupKind{ + Group: gk.Group, + Kind: gk.Kind, + }); err == nil { + return true + } + return false +} diff --git a/pkg/menu/lib.go b/pkg/menu/lib.go index 120fb20bc..71ece3ddf 100644 --- a/pkg/menu/lib.go +++ b/pkg/menu/lib.go @@ -43,7 +43,7 @@ func RenderMenu(driver *UserMenuDriver, req *rsapi.RenderMenuRequest) (*rsapi.Me } } -func GenerateMenuItems(kc client.Client, disco discovery.ServerResourcesInterface) (map[string]map[string]*rsapi.MenuItem, error) { +func GenerateMenuItems(kc client.Client, disco discovery.DiscoveryInterface) (map[string]map[string]*rsapi.MenuItem, error) { rsLists, err := disco.ServerPreferredResources() if err != nil && !discovery.IsGroupDiscoveryFailedError(err) { return nil, err diff --git a/pkg/menu/usermenu.go b/pkg/menu/usermenu.go index ebb2cc203..e131ccee4 100644 --- a/pkg/menu/usermenu.go +++ b/pkg/menu/usermenu.go @@ -38,12 +38,12 @@ import ( type UserMenuDriver struct { kc client.Client - disco discovery.ServerResourcesInterface + disco discovery.DiscoveryInterface ns string user string } -func NewUserMenuDriver(kc client.Client, disco discovery.ServerResourcesInterface, ns, user string) *UserMenuDriver { +func NewUserMenuDriver(kc client.Client, disco discovery.DiscoveryInterface, ns, user string) *UserMenuDriver { return &UserMenuDriver{ kc: kc, disco: disco, diff --git a/pkg/registry/meta/rendermenu/storage.go b/pkg/registry/meta/rendermenu/storage.go index 6ec4342e5..978685b20 100644 --- a/pkg/registry/meta/rendermenu/storage.go +++ b/pkg/registry/meta/rendermenu/storage.go @@ -35,7 +35,7 @@ import ( type Storage struct { kc client.Client - disco discovery.ServerResourcesInterface + disco discovery.DiscoveryInterface ns string } @@ -47,7 +47,7 @@ var ( _ rest.SingularNameProvider = &Storage{} ) -func NewStorage(kc client.Client, disco discovery.ServerResourcesInterface, ns string) *Storage { +func NewStorage(kc client.Client, disco discovery.DiscoveryInterface, ns string) *Storage { return &Storage{ kc: kc, disco: disco, diff --git a/pkg/registry/meta/usermenu/available.go b/pkg/registry/meta/usermenu/available.go index fa102f9f9..1a48640cc 100644 --- a/pkg/registry/meta/usermenu/available.go +++ b/pkg/registry/meta/usermenu/available.go @@ -34,7 +34,7 @@ import ( type AvailableStorage struct { kc client.Client - disco discovery.ServerResourcesInterface + disco discovery.DiscoveryInterface ns string } @@ -44,7 +44,7 @@ var ( _ rest.Getter = &AvailableStorage{} ) -func NewAvailableStorage(kc client.Client, disco discovery.ServerResourcesInterface, ns string) *AvailableStorage { +func NewAvailableStorage(kc client.Client, disco discovery.DiscoveryInterface, ns string) *AvailableStorage { return &AvailableStorage{ kc: kc, disco: disco, diff --git a/pkg/registry/meta/usermenu/storage.go b/pkg/registry/meta/usermenu/storage.go index 0d5329c2e..65823b6d4 100644 --- a/pkg/registry/meta/usermenu/storage.go +++ b/pkg/registry/meta/usermenu/storage.go @@ -36,7 +36,7 @@ import ( type Storage struct { kc client.Client - disco discovery.ServerResourcesInterface + disco discovery.DiscoveryInterface ns string convertor rest.TableConvertor } @@ -52,7 +52,7 @@ var ( _ rest.SingularNameProvider = &Storage{} ) -func NewStorage(kc client.Client, disco discovery.ServerResourcesInterface, ns string) *Storage { +func NewStorage(kc client.Client, disco discovery.DiscoveryInterface, ns string) *Storage { return &Storage{ kc: kc, disco: disco, diff --git a/pkg/registry/meta/vendormenu/available.go b/pkg/registry/meta/vendormenu/available.go index 4f63aafee..fb7b621c6 100644 --- a/pkg/registry/meta/vendormenu/available.go +++ b/pkg/registry/meta/vendormenu/available.go @@ -32,7 +32,7 @@ import ( type AvailableStorage struct { kc client.Client - disco discovery.ServerResourcesInterface + disco discovery.DiscoveryInterface } var ( @@ -41,7 +41,7 @@ var ( _ rest.Getter = &AvailableStorage{} ) -func NewAvailableStorage(kc client.Client, disco discovery.ServerResourcesInterface) *AvailableStorage { +func NewAvailableStorage(kc client.Client, disco discovery.DiscoveryInterface) *AvailableStorage { return &AvailableStorage{ kc: kc, disco: disco, diff --git a/pkg/registry/meta/vendormenu/storage.go b/pkg/registry/meta/vendormenu/storage.go index 23bfeb945..c97d79922 100644 --- a/pkg/registry/meta/vendormenu/storage.go +++ b/pkg/registry/meta/vendormenu/storage.go @@ -35,7 +35,7 @@ import ( type Storage struct { kc client.Client - disco discovery.ServerResourcesInterface + disco discovery.DiscoveryInterface convertor rest.TableConvertor } @@ -48,7 +48,7 @@ var ( _ rest.SingularNameProvider = &Storage{} ) -func NewStorage(kc client.Client, disco discovery.ServerResourcesInterface) *Storage { +func NewStorage(kc client.Client, disco discovery.DiscoveryInterface) *Storage { return &Storage{ kc: kc, disco: disco, diff --git a/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/openapi_generated.go b/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/openapi_generated.go index d3e8b4af1..e935bb838 100644 --- a/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/openapi_generated.go +++ b/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/openapi_generated.go @@ -15886,6 +15886,12 @@ func schema_resource_metadata_apis_meta_v1alpha1_MenuEntry(ref common.ReferenceC Format: "", }, }, + "featureMode": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, "icons": { SchemaProps: spec.SchemaProps{ Type: []string{"array"}, @@ -15950,6 +15956,12 @@ func schema_resource_metadata_apis_meta_v1alpha1_MenuItem(ref common.ReferenceCa Format: "", }, }, + "featureMode": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, "icons": { SchemaProps: spec.SchemaProps{ Type: []string{"array"}, diff --git a/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menu_types.go b/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menu_types.go index 58753ab15..269c442c1 100644 --- a/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menu_types.go +++ b/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menu_types.go @@ -54,6 +54,15 @@ type MenuSection struct { Items []MenuItem `json:"items"` } +// +kubebuilder:validation:Enum=ALPHA;BETA;GA +type FeatureMode string + +const ( + FeatureModeAlpha FeatureMode = "ALPHA" + FeatureModeBeta FeatureMode = "BETA" + FeatureModeGA FeatureMode = "GA" +) + type MenuSectionInfo struct { Name string `json:"name,omitempty"` @@ -81,6 +90,8 @@ type MenuItem struct { // +optional LayoutName string `json:"layoutName,omitempty"` // +optional + FeatureMode FeatureMode `json:"featureMode,omitempty"` + // +optional Icons []helmshared.ImageSpec `json:"icons,omitempty"` Installer *shared.DeploymentParameters `json:"installer,omitempty"` // +optional diff --git a/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menuoutline_types.go b/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menuoutline_types.go index e11ab5e26..fc60ddf56 100644 --- a/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menuoutline_types.go +++ b/vendor/kmodules.xyz/resource-metadata/apis/meta/v1alpha1/ui_menuoutline_types.go @@ -80,6 +80,8 @@ type MenuEntry struct { // +optional Required bool `json:"required,omitempty"` // +optional + FeatureMode FeatureMode `json:"featureMode,omitempty"` + // +optional Icons []helmshared.ImageSpec `json:"icons,omitempty"` } diff --git a/vendor/kmodules.xyz/resource-metadata/crds/meta.k8s.appscode.com_menuoutlines.yaml b/vendor/kmodules.xyz/resource-metadata/crds/meta.k8s.appscode.com_menuoutlines.yaml index 333e5fefb..04647976e 100644 --- a/vendor/kmodules.xyz/resource-metadata/crds/meta.k8s.appscode.com_menuoutlines.yaml +++ b/vendor/kmodules.xyz/resource-metadata/crds/meta.k8s.appscode.com_menuoutlines.yaml @@ -106,6 +106,12 @@ spec: items: items: properties: + featureMode: + enum: + - ALPHA + - BETA + - GA + type: string icons: items: description: ImageSpec contains information about an diff --git a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-accordion.yaml b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-accordion.yaml index 0bd1436a4..6b6ce7044 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-accordion.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-accordion.yaml @@ -14,54 +14,109 @@ spec: - src: https://cdn.appscode.com/k8s/icons/menu/datastore.png type: image/png items: - - layoutName: kubedb.com-v1alpha2-elasticsearches-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-elasticsearches-kubedb name: Elasticsearch required: true type: group: kubedb.com kind: Elasticsearch - - layoutName: kubedb.com-v1alpha2-kafkas-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-kafkas-kubedb name: Kafka required: true type: group: kubedb.com kind: Kafka - - layoutName: kubedb.com-v1alpha2-mariadbs-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-mariadbs-kubedb name: MariaDB required: true type: group: kubedb.com kind: MariaDB - - layoutName: kubedb.com-v1alpha2-mongodbs-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-mongodbs-kubedb name: MongoDB required: true type: group: kubedb.com kind: MongoDB - - layoutName: kubedb.com-v1alpha2-mysqls-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-mysqls-kubedb name: MySQL required: true type: group: kubedb.com kind: MySQL - - layoutName: kubedb.com-v1alpha2-postgreses-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-postgreses-kubedb name: PostgreSQL required: true type: group: kubedb.com kind: Postgres - - layoutName: kubedb.com-v1alpha2-proxysqls-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-proxysqls-kubedb name: ProxySQL - required: true type: group: kubedb.com kind: ProxySQL - - layoutName: kubedb.com-v1alpha2-redises-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-redises-kubedb name: Redis required: true type: group: kubedb.com kind: Redis + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-druids-kubedb + name: Druid + type: + group: kubedb.com + kind: Druid + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-ferretdbs-kubedb + name: FerretDB + type: + group: kubedb.com + kind: FerretDB + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-mssqlservers-kubedb + name: MSSQLServer + type: + group: kubedb.com + kind: MSSQLServer + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-pgpools-kubedb + name: Pgpool + type: + group: kubedb.com + kind: Pgpool + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-rabbitmqs-kubedb + name: RabbitMQ + type: + group: kubedb.com + kind: RabbitMQ + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-singlestores-kubedb + name: Singlestore + type: + group: kubedb.com + kind: Singlestore + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-solrs-kubedb + name: Solr + type: + group: kubedb.com + kind: Solr + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-zookeepers-kubedb + name: Zookeeper + type: + group: kubedb.com + kind: Zookeeper name: Datastore path: /ui.appscode.com/v1alpha1/sections/datastore - icons: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-gallery.yaml b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-gallery.yaml index 4f641f52f..3717e1ac2 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-gallery.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/byte.builders/kubedb-gallery.yaml @@ -14,54 +14,109 @@ spec: - src: https://cdn.appscode.com/k8s/icons/menu/datastore.png type: image/png items: - - layoutName: kubedb.com-v1alpha2-elasticsearches-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-elasticsearches-kubedb name: Elasticsearch required: true type: group: kubedb.com kind: Elasticsearch - - layoutName: kubedb.com-v1alpha2-kafkas-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-kafkas-kubedb name: Kafka required: true type: group: kubedb.com kind: Kafka - - layoutName: kubedb.com-v1alpha2-mariadbs-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-mariadbs-kubedb name: MariaDB required: true type: group: kubedb.com kind: MariaDB - - layoutName: kubedb.com-v1alpha2-mongodbs-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-mongodbs-kubedb name: MongoDB required: true type: group: kubedb.com kind: MongoDB - - layoutName: kubedb.com-v1alpha2-mysqls-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-mysqls-kubedb name: MySQL required: true type: group: kubedb.com kind: MySQL - - layoutName: kubedb.com-v1alpha2-postgreses-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-postgreses-kubedb name: PostgreSQL required: true type: group: kubedb.com kind: Postgres - - layoutName: kubedb.com-v1alpha2-proxysqles-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-proxysqles-kubedb name: ProxySQL - required: true type: group: kubedb.com kind: ProxySQL - - layoutName: kubedb.com-v1alpha2-redises-kubedb + - featureMode: GA + layoutName: kubedb.com-v1alpha2-redises-kubedb name: Redis required: true type: group: kubedb.com kind: Redis + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-druids-kubedb + name: Druid + type: + group: kubedb.com + kind: Druid + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-ferretdbs-kubedb + name: FerretDB + type: + group: kubedb.com + kind: FerretDB + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-mssqlservers-kubedb + name: MSSQLServer + type: + group: kubedb.com + kind: MSSQLServer + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-pgpools-kubedb + name: Pgpool + type: + group: kubedb.com + kind: Pgpool + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-rabbitmqs-kubedb + name: RabbitMQ + type: + group: kubedb.com + kind: RabbitMQ + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-singlestores-kubedb + name: Singlestore + type: + group: kubedb.com + kind: Singlestore + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-solrs-kubedb + name: Solr + type: + group: kubedb.com + kind: Solr + - featureMode: ALPHA + layoutName: kubedb.com-v1alpha2-zookeepers-kubedb + name: Zookeeper + type: + group: kubedb.com + kind: Zookeeper name: Datastore path: /ui.appscode.com/v1alpha1/sections/datastore - icons: diff --git a/vendor/modules.txt b/vendor/modules.txt index 1384fabb9..0061d86df 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1959,7 +1959,7 @@ kmodules.xyz/monitoring-agent-api/client ## explicit; go 1.21.5 kmodules.xyz/offshoot-api/api/v1 kmodules.xyz/offshoot-api/api/v2 -# kmodules.xyz/resource-metadata v0.18.4-0.20240507203038-74ed30e3192f +# kmodules.xyz/resource-metadata v0.18.4-0.20240508091636-af957419033d ## explicit; go 1.22.0 kmodules.xyz/resource-metadata/apis/core/install kmodules.xyz/resource-metadata/apis/core/v1alpha1