From e434f3189e81e473aa89e3589ca81545d1341cf8 Mon Sep 17 00:00:00 2001 From: Tomas Nozicka Date: Fri, 3 Aug 2018 16:08:28 +0200 Subject: [PATCH] Deprecate ListWatchUntil, fix it and call places --- pkg/client/tests/listwatch_test.go | 2 +- pkg/controller/client_builder.go | 3 ++- staging/src/k8s.io/client-go/tools/watch/until.go | 13 +++++++++---- .../k8s.io/client-go/util/certificate/csr/csr.go | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pkg/client/tests/listwatch_test.go b/pkg/client/tests/listwatch_test.go index 0fcc79c4867..35a8a256e44 100644 --- a/pkg/client/tests/listwatch_test.go +++ b/pkg/client/tests/listwatch_test.go @@ -214,7 +214,7 @@ func TestListWatchUntil(t *testing.T) { } timeout := 10 * time.Second - lastEvent, err := ListWatchUntil(timeout, listwatch, conditions...) + lastEvent, err := watchtools.ListWatchUntil(timeout, listwatch, conditions...) if err != nil { t.Fatalf("expected nil error, got %#v", err) } diff --git a/pkg/controller/client_builder.go b/pkg/controller/client_builder.go index 5f32728d12e..bcf2182d090 100644 --- a/pkg/controller/client_builder.go +++ b/pkg/controller/client_builder.go @@ -33,6 +33,7 @@ import ( v1core "k8s.io/client-go/kubernetes/typed/core/v1" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" + watchtools "k8s.io/client-go/tools/watch" "k8s.io/kubernetes/pkg/api/legacyscheme" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/serviceaccount" @@ -122,7 +123,7 @@ func (b SAControllerClientBuilder) Config(name string) (*restclient.Config, erro return b.CoreClient.Secrets(b.Namespace).Watch(options) }, } - _, err = cache.ListWatchUntil(30*time.Second, lw, + _, err = watchtools.ListWatchUntil(30*time.Second, lw, func(event watch.Event) (bool, error) { switch event.Type { case watch.Deleted: diff --git a/staging/src/k8s.io/client-go/tools/watch/until.go b/staging/src/k8s.io/client-go/tools/watch/until.go index 724e726942f..1907b68a3f0 100644 --- a/staging/src/k8s.io/client-go/tools/watch/until.go +++ b/staging/src/k8s.io/client-go/tools/watch/until.go @@ -23,8 +23,10 @@ import ( "github.com/golang/glog" "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/tools/cache" ) // ConditionFunc returns true if the condition has been reached, false if it has not been reached yet, @@ -105,7 +107,10 @@ func ContextWithOptionalTimeout(parent context.Context, timeout time.Duration) ( // ListWatchUntil checks the provided conditions against the items returned by the list watcher, returning wait.ErrWaitTimeout // if timeout is exceeded without all conditions returning true, or an error if an error occurs. // TODO: check for watch expired error and retry watch from latest point? Same issue exists for Until. -func ListWatchUntil(timeout time.Duration, lw ListerWatcher, conditions ...watchtools.ConditionFunc) (*watch.Event, error) { +// TODO: remove when no longer used +// +// Deprecated: Use UntilWithSync instead. +func ListWatchUntil(timeout time.Duration, lw cache.ListerWatcher, conditions ...ConditionFunc) (*watch.Event, error) { if len(conditions) == 0 { return nil, nil } @@ -167,10 +172,10 @@ func ListWatchUntil(timeout time.Duration, lw ListerWatcher, conditions ...watch return nil, err } - ctx, cancel := watchtools.ContextWithOptionalTimeout(context.Background(), timeout) + ctx, cancel := ContextWithOptionalTimeout(context.Background(), timeout) defer cancel() - evt, err := watchtools.UntilWithoutRetry(ctx, watchInterface, remainingConditions...) - if err == watchtools.ErrWatchClosed { + evt, err := UntilWithoutRetry(ctx, watchInterface, remainingConditions...) + if err == ErrWatchClosed { // present a consistent error interface to callers err = wait.ErrWaitTimeout } diff --git a/staging/src/k8s.io/client-go/util/certificate/csr/csr.go b/staging/src/k8s.io/client-go/util/certificate/csr/csr.go index 22112a5b5b6..4a53352fee0 100644 --- a/staging/src/k8s.io/client-go/util/certificate/csr/csr.go +++ b/staging/src/k8s.io/client-go/util/certificate/csr/csr.go @@ -24,10 +24,11 @@ import ( "encoding/base64" "encoding/pem" "fmt" - "github.com/golang/glog" "reflect" "time" + "github.com/golang/glog" + certificates "k8s.io/api/certificates/v1beta1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -38,6 +39,7 @@ import ( "k8s.io/apimachinery/pkg/watch" certificatesclient "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" "k8s.io/client-go/tools/cache" + watchtools "k8s.io/client-go/tools/watch" certutil "k8s.io/client-go/util/cert" ) @@ -121,7 +123,7 @@ func RequestCertificate(client certificatesclient.CertificateSigningRequestInter func WaitForCertificate(client certificatesclient.CertificateSigningRequestInterface, req *certificates.CertificateSigningRequest, timeout time.Duration) (certData []byte, err error) { fieldSelector := fields.OneTermEqualSelector("metadata.name", req.Name).String() - event, err := cache.ListWatchUntil( + event, err := watchtools.ListWatchUntil( timeout, &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {