2019-08-13 16:36:03 -07:00
package resources
import (
2020-06-02 08:51:42 -07:00
"context"
2020-06-11 21:50:59 -07:00
"github.com/rancher/apiserver/pkg/store/apiroot"
"github.com/rancher/apiserver/pkg/subscribe"
"github.com/rancher/apiserver/pkg/types"
2020-02-10 10:18:20 -07:00
"github.com/rancher/steve/pkg/accesscontrol"
2020-01-30 22:01:21 -07:00
"github.com/rancher/steve/pkg/client"
2019-09-11 14:05:00 -07:00
"github.com/rancher/steve/pkg/clustercache"
2020-06-11 21:50:59 -07:00
"github.com/rancher/steve/pkg/resources/apigroups"
2021-03-01 17:12:28 -07:00
"github.com/rancher/steve/pkg/resources/cluster"
2020-06-11 21:50:59 -07:00
"github.com/rancher/steve/pkg/resources/common"
"github.com/rancher/steve/pkg/resources/counts"
2020-08-03 19:52:04 -07:00
"github.com/rancher/steve/pkg/resources/formatters"
2021-03-01 22:26:26 -07:00
"github.com/rancher/steve/pkg/resources/userpreferences"
2020-01-30 22:37:59 -07:00
"github.com/rancher/steve/pkg/schema"
2020-06-11 21:50:59 -07:00
"github.com/rancher/steve/pkg/stores/proxy"
2020-09-10 23:04:28 -07:00
"github.com/rancher/steve/pkg/summarycache"
2024-06-05 00:22:48 +05:30
corecontrollers "github.com/rancher/wrangler/v3/pkg/generated/controllers/core/v1"
2021-08-10 11:03:59 -07:00
"k8s.io/apiserver/pkg/endpoints/request"
2020-01-30 22:37:59 -07:00
"k8s.io/client-go/discovery"
2019-08-13 16:36:03 -07:00
)
2021-03-01 17:12:28 -07:00
func DefaultSchemas ( ctx context . Context , baseSchema * types . APISchemas , ccache clustercache . ClusterCache ,
2023-11-27 16:10:05 -06:00
cg proxy . ClientGetter , schemaFactory schema . Factory , serverVersion string ) error {
2019-09-09 14:28:55 -07:00
counts . Register ( baseSchema , ccache )
2021-08-10 11:03:59 -07:00
subscribe . Register ( baseSchema , func ( apiOp * types . APIRequest ) * types . APISchemas {
user , ok := request . UserFrom ( apiOp . Context ( ) )
if ok {
schemas , err := schemaFactory . Schemas ( user )
if err == nil {
return schemas
}
}
return apiOp . Schemas
2021-08-10 16:09:19 -07:00
} , serverVersion )
2020-06-11 21:50:59 -07:00
apiroot . Register ( baseSchema , [ ] string { "v1" } , "proxy:/apis" )
2021-03-01 17:12:28 -07:00
cluster . Register ( ctx , baseSchema , cg , schemaFactory )
2021-03-01 22:26:26 -07:00
userpreferences . Register ( baseSchema )
2021-03-01 17:12:28 -07:00
return nil
2020-01-30 22:37:59 -07:00
}
2019-08-13 16:36:03 -07:00
2020-06-22 08:49:49 -07:00
func DefaultSchemaTemplates ( cf * client . Factory ,
2021-03-01 17:12:28 -07:00
baseSchemas * types . APISchemas ,
2020-06-22 08:49:49 -07:00
summaryCache * summarycache . SummaryCache ,
lookup accesscontrol . AccessSetLookup ,
2023-05-10 15:31:01 -07:00
discovery discovery . DiscoveryInterface ,
namespaceCache corecontrollers . NamespaceCache ) [ ] schema . Template {
2020-01-30 22:37:59 -07:00
return [ ] schema . Template {
2024-10-18 12:15:42 -05:00
common . DefaultTemplate ( cf , summaryCache , lookup , namespaceCache ) ,
2020-03-10 23:12:04 -07:00
apigroups . Template ( discovery ) ,
2020-06-05 13:30:33 -07:00
{
ID : "configmap" ,
2024-10-28 17:55:36 -03:00
Formatter : formatters . HandleHelmData ,
2020-06-05 13:30:33 -07:00
} ,
{
ID : "secret" ,
2024-10-28 17:55:36 -03:00
Formatter : formatters . HandleHelmData ,
2020-08-03 19:52:04 -07:00
} ,
{
ID : "pod" ,
Formatter : formatters . Pod ,
2020-06-05 13:30:33 -07:00
} ,
2021-03-01 17:12:28 -07:00
{
ID : "management.cattle.io.cluster" ,
Customize : func ( apiSchema * types . APISchema ) {
cluster . AddApply ( baseSchemas , apiSchema )
} ,
} ,
2020-01-30 22:01:21 -07:00
}
2019-08-13 16:36:03 -07:00
}
2024-06-05 16:17:12 +02:00
// DefaultSchemaTemplatesForStore returns the same default templates as DefaultSchemaTemplates, only using DefaultSchemaTemplateFoStore internally to construct the templates.
func DefaultSchemaTemplatesForStore ( store types . Store ,
baseSchemas * types . APISchemas ,
summaryCache * summarycache . SummaryCache ,
2025-01-07 12:20:26 -08:00
lookup accesscontrol . AccessSetLookup ,
2024-06-05 16:17:12 +02:00
discovery discovery . DiscoveryInterface ) [ ] schema . Template {
return [ ] schema . Template {
2025-01-07 12:20:26 -08:00
common . DefaultTemplateForStore ( store , summaryCache , lookup ) ,
2024-06-05 16:17:12 +02:00
apigroups . Template ( discovery ) ,
{
ID : "configmap" ,
2024-10-28 17:55:36 -03:00
Formatter : formatters . HandleHelmData ,
2024-06-05 16:17:12 +02:00
} ,
{
ID : "secret" ,
2024-10-28 17:55:36 -03:00
Formatter : formatters . HandleHelmData ,
2024-06-05 16:17:12 +02:00
} ,
{
ID : "pod" ,
Formatter : formatters . Pod ,
} ,
{
ID : "management.cattle.io.cluster" ,
Customize : func ( apiSchema * types . APISchema ) {
cluster . AddApply ( baseSchemas , apiSchema )
} ,
} ,
}
}