From c5087d55cf79ee06a012a7faa7b329e49378815e Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Thu, 26 Mar 2020 13:58:39 -0700 Subject: [PATCH] Update to k8s 1.18 (cherry picked from commit 420f62f642eb4ffc09732af09cbd0846e2a36a25) --- pkg/auth/filter.go | 2 +- pkg/controllers/schema/schemas.go | 17 +++++++++-------- pkg/server/resources/common/dynamiccolumns.go | 5 +++-- .../resources/userpreferences/configmap.go | 10 +++++----- .../resources/userpreferences/rancherpref.go | 16 ++++++++-------- pkg/server/store/proxy/proxy_store.go | 16 ++++++++-------- 6 files changed, 34 insertions(+), 32 deletions(-) diff --git a/pkg/auth/filter.go b/pkg/auth/filter.go index ad19c34..b1bb3bf 100644 --- a/pkg/auth/filter.go +++ b/pkg/auth/filter.go @@ -70,7 +70,7 @@ func WebhookConfigForURL(url string) (string, error) { } func NewWebhookAuthenticator(cacheTTL time.Duration, kubeConfigFile string) (Authenticator, error) { - wh, err := webhook.New(kubeConfigFile, "v1", nil) + wh, err := webhook.New(kubeConfigFile, "v1", nil, nil) if err != nil { return nil, err } diff --git a/pkg/controllers/schema/schemas.go b/pkg/controllers/schema/schemas.go index 5c1e702..14bffd7 100644 --- a/pkg/controllers/schema/schemas.go +++ b/pkg/controllers/schema/schemas.go @@ -18,6 +18,7 @@ import ( "golang.org/x/sync/semaphore" authorizationv1 "k8s.io/api/authorization/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/discovery" authorizationv1client "k8s.io/client-go/kubernetes/typed/authorization/v1" apiv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" @@ -71,7 +72,7 @@ func Register(ctx context.Context, return func() error { h.queueRefresh() - return h.refreshAll() + return h.refreshAll(ctx) } } @@ -90,7 +91,7 @@ func (h *handler) queueRefresh() { go func() { time.Sleep(500 * time.Millisecond) - if err := h.refreshAll(); err != nil { + if err := h.refreshAll(h.ctx); err != nil { logrus.Errorf("failed to sync schemas: %v", err) atomic.StoreInt32(&h.toSync, 1) } @@ -143,14 +144,14 @@ func (h *handler) getColumns(ctx context.Context, schemas map[string]*types.APIS s := schema eg.Go(func() error { defer listPool.Release(1) - return h.cols.SetColumns(s) + return h.cols.SetColumns(ctx, s) }) } return eg.Wait() } -func (h *handler) refreshAll() error { +func (h *handler) refreshAll(ctx context.Context) error { h.Lock() defer h.Unlock() @@ -170,7 +171,7 @@ func (h *handler) refreshAll() error { if preferredTypeExists(schema, schemas) { continue } - if ok, err := h.allowed(schema); err != nil { + if ok, err := h.allowed(ctx, schema); err != nil { return err } else if !ok { continue @@ -220,9 +221,9 @@ func preferredTypeExists(schema *types.APISchema, schemas map[string]*types.APIS return ok } -func (h *handler) allowed(schema *types.APISchema) (bool, error) { +func (h *handler) allowed(ctx context.Context, schema *types.APISchema) (bool, error) { gvr := attributes.GVR(schema) - ssar, err := h.ssar.Create(&authorizationv1.SelfSubjectAccessReview{ + ssar, err := h.ssar.Create(ctx, &authorizationv1.SelfSubjectAccessReview{ Spec: authorizationv1.SelfSubjectAccessReviewSpec{ ResourceAttributes: &authorizationv1.ResourceAttributes{ Verb: "list", @@ -231,7 +232,7 @@ func (h *handler) allowed(schema *types.APISchema) (bool, error) { Resource: gvr.Resource, }, }, - }) + }, metav1.CreateOptions{}) if err != nil { return false, err } diff --git a/pkg/server/resources/common/dynamiccolumns.go b/pkg/server/resources/common/dynamiccolumns.go index 81e8bd6..2ca1acd 100644 --- a/pkg/server/resources/common/dynamiccolumns.go +++ b/pkg/server/resources/common/dynamiccolumns.go @@ -1,6 +1,7 @@ package common import ( + "context" "fmt" "github.com/rancher/steve/pkg/attributes" @@ -34,7 +35,7 @@ func NewDynamicColumns(config *rest.Config) (*DynamicColumns, error) { }, nil } -func (d *DynamicColumns) SetColumns(schema *types.APISchema) error { +func (d *DynamicColumns) SetColumns(ctx context.Context, schema *types.APISchema) error { if attributes.Columns(schema) != nil { return nil } @@ -56,7 +57,7 @@ func (d *DynamicColumns) SetColumns(schema *types.APISchema) error { Limit: 1, }, metav1.ParameterCodec) - obj, err := r.Do().Get() + obj, err := r.Do(ctx).Get() if err != nil { attributes.SetTable(schema, false) return nil diff --git a/pkg/server/resources/userpreferences/configmap.go b/pkg/server/resources/userpreferences/configmap.go index eab5ee9..c8321d7 100644 --- a/pkg/server/resources/userpreferences/configmap.go +++ b/pkg/server/resources/userpreferences/configmap.go @@ -43,7 +43,7 @@ func (e *configMapStore) ByID(apiOp *types.APIRequest, schema *types.APISchema, Object: pref, } - obj, err := client.Get(prefName(u), metav1.GetOptions{}) + obj, err := client.Get(apiOp.Context(), prefName(u), metav1.GetOptions{}) if apierrors.IsNotFound(err) { return result, nil } @@ -71,9 +71,9 @@ func (e *configMapStore) Update(apiOp *types.APIRequest, schema *types.APISchema return types.APIObject{}, err } - obj, err := client.Get(prefName(u), metav1.GetOptions{}) + obj, err := client.Get(apiOp.Context(), prefName(u), metav1.GetOptions{}) if apierrors.IsNotFound(err) { - _, err = client.Create(&unstructured.Unstructured{ + _, err = client.Create(apiOp.Context(), &unstructured.Unstructured{ Object: map[string]interface{}{ "metadata": map[string]interface{}{ "name": prefName(u), @@ -83,7 +83,7 @@ func (e *configMapStore) Update(apiOp *types.APIRequest, schema *types.APISchema }, metav1.CreateOptions{}) } else if err == nil { obj.Object["data"] = data.Data().Map("data") - _, err = client.Update(obj, metav1.UpdateOptions{}) + _, err = client.Update(apiOp.Context(), obj, metav1.UpdateOptions{}) } if err != nil { return types.APIObject{}, err @@ -99,5 +99,5 @@ func (e *configMapStore) Delete(apiOp *types.APIRequest, schema *types.APISchema return types.APIObject{}, err } - return types.APIObject{}, client.Delete(prefName(u), nil) + return types.APIObject{}, client.Delete(apiOp.Context(), prefName(u), metav1.DeleteOptions{}) } diff --git a/pkg/server/resources/userpreferences/rancherpref.go b/pkg/server/resources/userpreferences/rancherpref.go index 43d12ef..14fd1a8 100644 --- a/pkg/server/resources/userpreferences/rancherpref.go +++ b/pkg/server/resources/userpreferences/rancherpref.go @@ -48,7 +48,7 @@ func (e *rancherPrefStore) ByID(apiOp *types.APIRequest, schema *types.APISchema Object: pref, } - objs, err := client.List(metav1.ListOptions{}) + objs, err := client.List(apiOp.Context(), metav1.ListOptions{}) if err != nil { return result, err } @@ -77,11 +77,11 @@ func (e *rancherPrefStore) createNamespace(apiOp *types.APIRequest, ns string) e if err != nil { return err } - _, err = client.Get(ns, metav1.GetOptions{}) + _, err = client.Get(apiOp.Context(), ns, metav1.GetOptions{}) if !apierrors.IsNotFound(err) { return err } - _, err = client.Create(&unstructured.Unstructured{ + _, err = client.Create(apiOp.Context(), &unstructured.Unstructured{ Object: map[string]interface{}{ "metadata": map[string]interface{}{ "name": ns, @@ -104,7 +104,7 @@ func (e *rancherPrefStore) Update(apiOp *types.APIRequest, schema *types.APISche newValues[k] = convert.ToString(v) } - prefs, err := client.List(metav1.ListOptions{}) + prefs, err := client.List(apiOp.Context(), metav1.ListOptions{}) if err != nil { return types.APIObject{}, err } @@ -115,12 +115,12 @@ func (e *rancherPrefStore) Update(apiOp *types.APIRequest, schema *types.APISche delete(newValues, key) if ok && newValue != pref.Object["value"] { pref.Object["value"] = newValue - _, err := client.Update(&pref, metav1.UpdateOptions{}) + _, err := client.Update(apiOp.Context(), &pref, metav1.UpdateOptions{}) if err != nil { return types.APIObject{}, err } } else if !ok { - err := client.Delete(key, nil) + err := client.Delete(apiOp.Context(), key, metav1.DeleteOptions{}) if err != nil { return types.APIObject{}, err } @@ -136,7 +136,7 @@ func (e *rancherPrefStore) Update(apiOp *types.APIRequest, schema *types.APISche nsExists = true } - _, err = client.Create(&unstructured.Unstructured{ + _, err = client.Create(apiOp.Context(), &unstructured.Unstructured{ Object: map[string]interface{}{ "apiVersion": gvk.GroupVersion().String(), "kind": gvk.Kind, @@ -160,5 +160,5 @@ func (e *rancherPrefStore) Delete(apiOp *types.APIRequest, schema *types.APISche return types.APIObject{}, err } - return types.APIObject{}, client.DeleteCollection(nil, metav1.ListOptions{}) + return types.APIObject{}, client.DeleteCollection(apiOp.Context(), metav1.DeleteOptions{}, metav1.ListOptions{}) } diff --git a/pkg/server/store/proxy/proxy_store.go b/pkg/server/store/proxy/proxy_store.go index ff3a52c..5b076af 100644 --- a/pkg/server/store/proxy/proxy_store.go +++ b/pkg/server/store/proxy/proxy_store.go @@ -105,7 +105,7 @@ func (s *Store) byID(apiOp *types.APIRequest, schema *types.APISchema, id string return nil, err } - obj, err := k8sClient.Get(id, opts) + obj, err := k8sClient.Get(apiOp.Context(), id, opts) rowToObject(obj) return obj, err } @@ -225,7 +225,7 @@ func (s *Store) list(apiOp *types.APIRequest, schema *types.APISchema, client dy return types.APIObjectList{}, nil } - resultList, err := client.List(opts) + resultList, err := client.List(apiOp.Context(), opts) if err != nil { return types.APIObjectList{}, err } @@ -254,7 +254,7 @@ func returnErr(err error, c chan types.APIEvent) { func (s *Store) listAndWatch(apiOp *types.APIRequest, k8sClient dynamic.ResourceInterface, schema *types.APISchema, w types.WatchRequest, result chan types.APIEvent) { rev := w.Revision if rev == "" { - list, err := k8sClient.List(metav1.ListOptions{ + list, err := k8sClient.List(apiOp.Context(), metav1.ListOptions{ Limit: 1, }) if err != nil { @@ -267,7 +267,7 @@ func (s *Store) listAndWatch(apiOp *types.APIRequest, k8sClient dynamic.Resource } timeout := int64(60 * 30) - watcher, err := k8sClient.Watch(metav1.ListOptions{ + watcher, err := k8sClient.Watch(apiOp.Context(), metav1.ListOptions{ Watch: true, TimeoutSeconds: &timeout, ResourceVersion: rev, @@ -394,7 +394,7 @@ func (s *Store) Create(apiOp *types.APIRequest, schema *types.APISchema, params return types.APIObject{}, err } - resp, err = k8sClient.Create(&unstructured.Unstructured{Object: input}, opts) + resp, err = k8sClient.Create(apiOp.Context(), &unstructured.Unstructured{Object: input}, opts) rowToObject(resp) return toAPI(schema, resp), err } @@ -439,7 +439,7 @@ func (s *Store) Update(apiOp *types.APIRequest, schema *types.APISchema, params } } - resp, err := k8sClient.Patch(id, pType, bytes, opts) + resp, err := k8sClient.Patch(apiOp.Context(), id, pType, bytes, opts) if err != nil { return types.APIObject{}, err } @@ -457,7 +457,7 @@ func (s *Store) Update(apiOp *types.APIRequest, schema *types.APISchema, params return types.APIObject{}, err } - resp, err := k8sClient.Update(&unstructured.Unstructured{Object: moveFromUnderscore(input)}, metav1.UpdateOptions{}) + resp, err := k8sClient.Update(apiOp.Context(), &unstructured.Unstructured{Object: moveFromUnderscore(input)}, metav1.UpdateOptions{}) if err != nil { return types.APIObject{}, err } @@ -476,7 +476,7 @@ func (s *Store) Delete(apiOp *types.APIRequest, schema *types.APISchema, id stri return types.APIObject{}, err } - if err := k8sClient.Delete(id, &opts); err != nil { + if err := k8sClient.Delete(apiOp.Context(), id, opts); err != nil { return types.APIObject{}, err }