From f3aa58babd51fb7e0cf37ab4a97107c768e4e759 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Wed, 7 Aug 2019 09:07:27 -0700 Subject: [PATCH] Disable counts on schema --- pkg/server/api.go | 66 ----------------------------------------------- 1 file changed, 66 deletions(-) diff --git a/pkg/server/api.go b/pkg/server/api.go index 3a41488..d8cc5ce 100644 --- a/pkg/server/api.go +++ b/pkg/server/api.go @@ -1,15 +1,7 @@ package server import ( - "context" - "fmt" "net/http" - "sync" - - "golang.org/x/sync/semaphore" - - "github.com/rancher/norman/pkg/types/values" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/gorilla/mux" "github.com/rancher/naok/pkg/accesscontrol" @@ -51,69 +43,11 @@ func (a *apiServer) newSchemas() (*types.Schemas, error) { return nil, err } - sSchema := schemas.Schema("schema") - sSchema.CollectionFormatter = a.schemaCollectionFormatter(sSchema.CollectionFormatter) - schemas.DefaultMapper = newDefaultMapper subscribe.Register(schemas) return schemas, nil } -func (a *apiServer) schemaCollectionFormatter(next types.CollectionFormatter) types.CollectionFormatter { - return func(request *types.APIRequest, collection *types.GenericCollection) { - if next != nil { - next(request, collection) - } - - wg := sync.WaitGroup{} - sem := semaphore.NewWeighted(100) - - for _, item := range collection.Data { - resource, ok := item.(*types.RawResource) - if !ok { - continue - } - - schema := request.Schemas.Schema(resource.ID) - if schema == nil { - continue - } - - access := accesscontrol.GetAccessListMap(schema) - if !access.Grants("list", "*", "*") { - continue - } - - wg.Add(1) - if err := sem.Acquire(context.TODO(), 1); err != nil { - panic(err) - } - go func() { - defer func() { - sem.Release(1) - wg.Done() - }() - - client, err := a.cf.Client(request, schema) - if err != nil { - return - } - - fmt.Println("listing", attributes.GVK(schema)) - resp, err := client.List(v1.ListOptions{}) - if err != nil { - return - } - if len(resp.Items) > 0 { - values.PutValue(resource.Values, len(resp.Items), "attributes", "count") - } - }() - } - - wg.Wait() - } -} - func (a *apiServer) common(rw http.ResponseWriter, req *http.Request) (*types.APIRequest, bool) { user := &user.DefaultInfo{ Name: "admin",