From 7e6a32eb4681a7f93d874538088ce782d371eac7 Mon Sep 17 00:00:00 2001 From: Jimmy Chou Date: Thu, 19 Mar 2020 21:10:18 +0800 Subject: [PATCH] fix: add list/get/delete option forward to kube-apiserver --- pkg/platform/util/store.go | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/pkg/platform/util/store.go b/pkg/platform/util/store.go index b43fd0e19..379d05087 100644 --- a/pkg/platform/util/store.go +++ b/pkg/platform/util/store.go @@ -20,9 +20,6 @@ package util import ( "context" - "reflect" - "strings" - "k8s.io/apimachinery/pkg/api/errors" metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,7 +28,10 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/apiserver/pkg/registry/rest" clientrest "k8s.io/client-go/rest" + "reflect" + "strings" platforminternalclient "tkestack.io/tke/api/client/clientset/internalversion/typed/platform/internalversion" + "tkestack.io/tke/api/platform" "tkestack.io/tke/pkg/platform/apiserver/filter" ) @@ -64,6 +64,22 @@ func (s *Store) NamespaceScoped() bool { return s.Namespaced } +func listOptions(o *metainternalversion.ListOptions) *v1.ListOptions { + if o == nil { + return &v1.ListOptions{} + } + return &v1.ListOptions{ + LabelSelector: o.LabelSelector.String(), + FieldSelector: o.FieldSelector.String(), + Watch: o.Watch, + AllowWatchBookmarks: o.AllowWatchBookmarks, + ResourceVersion: o.ResourceVersion, + TimeoutSeconds: o.TimeoutSeconds, + Limit: o.Limit, + Continue: o.Continue, + } +} + // List returns a list of items matching labels and field according to the // backend kubernetes api server. func (s *Store) List(ctx context.Context, options *metainternalversion.ListOptions) (runtime.Object, error) { @@ -92,7 +108,7 @@ func (s *Store) List(ctx context.Context, options *metainternalversion.ListOptio NamespaceIfScoped(requestInfo.Namespace, requestInfo.Namespace != "" && requestInfo.Resource != "namespaces"). Resource(requestInfo.Resource). SubResource(requestInfo.Subresource). - // SpecificallyVersionedParams(options, metainternalversion.ParameterCodec, v1.SchemeGroupVersion). + SpecificallyVersionedParams(options, platform.ParameterCodec, v1.SchemeGroupVersion). Do(). Into(result); err != nil { return nil, err @@ -142,7 +158,7 @@ func (s *Store) Get(ctx context.Context, name string, options *v1.GetOptions) (r Resource(requestInfo.Resource). SubResource(requestInfo.Subresource). Name(name). - VersionedParams(options, v1.ParameterCodec). + VersionedParams(options, platform.ParameterCodec). Do(). Into(result); err != nil { return nil, err @@ -167,12 +183,12 @@ func (s *Store) Watch(ctx context.Context, options *metainternalversion.ListOpti NamespaceIfScoped(requestInfo.Namespace, requestInfo.Namespace != "" && requestInfo.Resource != "namespaces"). Resource(requestInfo.Resource). SubResource(requestInfo.Subresource). - // SpecificallyVersionedParams(options, v1.ParameterCodec, metainternalversion.SchemeGroupVersion). + SpecificallyVersionedParams(options, platform.ParameterCodec, v1.SchemeGroupVersion). Watch() } // Create inserts a new item according to the unique key from the object. -func (s *Store) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, _ *v1.CreateOptions) (runtime.Object, error) { +func (s *Store) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *v1.CreateOptions) (runtime.Object, error) { client, requestInfo, err := RESTClient(ctx, s.PlatformClient) if err != nil { return nil, err @@ -191,6 +207,7 @@ func (s *Store) Create(ctx context.Context, obj runtime.Object, createValidation NamespaceIfScoped(requestInfo.Namespace, requestInfo.Namespace != "" && requestInfo.Resource != "namespaces"). Resource(requestInfo.Resource). SubResource(requestInfo.Subresource). + VersionedParams(options, platform.ParameterCodec). Body(requestBody.Data). Do(). Into(result); err != nil { @@ -228,6 +245,7 @@ func (s *Store) Update(ctx context.Context, name string, objInfo rest.UpdatedObj NamespaceIfScoped(requestInfo.Namespace, requestInfo.Namespace != "" && requestInfo.Resource != "namespaces"). Resource(requestInfo.Resource). SubResource(requestInfo.Subresource). + VersionedParams(options, platform.ParameterCodec). Name(name). Body(requestBody.Data). Do(). @@ -251,6 +269,7 @@ func (s *Store) Delete(ctx context.Context, name string, deleteValidation rest.V NamespaceIfScoped(requestInfo.Namespace, requestInfo.Namespace != "" && requestInfo.Resource != "namespaces"). Resource(requestInfo.Resource). SubResource(requestInfo.Subresource). + VersionedParams(options, platform.ParameterCodec). Name(name). Body(options). Do() @@ -281,7 +300,7 @@ func (s *Store) DeleteCollection(ctx context.Context, options *v1.DeleteOptions, Context(ctx). NamespaceIfScoped(requestInfo.Namespace, requestInfo.Namespace != "" && requestInfo.Resource != "namespaces"). Resource(requestInfo.Resource). - // SpecificallyVersionedParams(listOptions, v1.ParameterCodec, metainternalversion.SchemeGroupVersion). + SpecificallyVersionedParams(listOptions, platform.ParameterCodec, v1.SchemeGroupVersion). Body(options). Do()