From 426330efa2ba41dedfdf828ff3f76e1e066ca250 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 11:03:59 -0700 Subject: [PATCH] Ensure that watches use the latest schemas --- pkg/resources/schema.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/resources/schema.go b/pkg/resources/schema.go index 40fbdf4..61a08ce 100644 --- a/pkg/resources/schema.go +++ b/pkg/resources/schema.go @@ -19,13 +19,23 @@ import ( steveschema "github.com/rancher/steve/pkg/schema" "github.com/rancher/steve/pkg/stores/proxy" "github.com/rancher/steve/pkg/summarycache" + "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/client-go/discovery" ) func DefaultSchemas(ctx context.Context, baseSchema *types.APISchemas, ccache clustercache.ClusterCache, cg proxy.ClientGetter, schemaFactory steveschema.Factory) error { counts.Register(baseSchema, ccache) - subscribe.Register(baseSchema) + 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 + }) apiroot.Register(baseSchema, []string{"v1"}, "proxy:/apis") cluster.Register(ctx, baseSchema, cg, schemaFactory) userpreferences.Register(baseSchema)