From 892f15d9a2b4662db0492dab2fb3f96982dbed74 Mon Sep 17 00:00:00 2001 From: bpopovschi Date: Fri, 25 Jan 2019 15:28:59 +0200 Subject: [PATCH] Added resource name to timeout error output on WAIT cmd --- pkg/kubectl/cmd/wait/BUILD | 1 - pkg/kubectl/cmd/wait/wait.go | 18 ++++++++++++------ pkg/kubectl/cmd/wait/wait_test.go | 15 ++++++--------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/pkg/kubectl/cmd/wait/BUILD b/pkg/kubectl/cmd/wait/BUILD index 08ddcfc6fea..a872edf2c0b 100644 --- a/pkg/kubectl/cmd/wait/BUILD +++ b/pkg/kubectl/cmd/wait/BUILD @@ -51,7 +51,6 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library", "//staging/src/k8s.io/cli-runtime/pkg/genericclioptions/printers:go_default_library", diff --git a/pkg/kubectl/cmd/wait/wait.go b/pkg/kubectl/cmd/wait/wait.go index 1fd91f2ca92..6ec0c81d27a 100644 --- a/pkg/kubectl/cmd/wait/wait.go +++ b/pkg/kubectl/cmd/wait/wait.go @@ -292,9 +292,10 @@ func IsDeleted(info *resource.Info, o *WaitOptions) (runtime.Object, bool, error } timeout := endTime.Sub(time.Now()) + errWaitTimeoutWithName := extendErrWaitTimeout(wait.ErrWaitTimeout, info) if timeout < 0 { // we're out of time - return gottenObj, false, wait.ErrWaitTimeout + return gottenObj, false, errWaitTimeoutWithName } ctx, cancel := watchtools.ContextWithOptionalTimeout(context.Background(), o.Timeout) @@ -307,9 +308,9 @@ func IsDeleted(info *resource.Info, o *WaitOptions) (runtime.Object, bool, error continue case err == wait.ErrWaitTimeout: if watchEvent != nil { - return watchEvent.Object, false, wait.ErrWaitTimeout + return watchEvent.Object, false, errWaitTimeoutWithName } - return gottenObj, false, wait.ErrWaitTimeout + return gottenObj, false, errWaitTimeoutWithName default: return gottenObj, false, err } @@ -386,9 +387,10 @@ func (w ConditionalWait) IsConditionMet(info *resource.Info, o *WaitOptions) (ru } timeout := endTime.Sub(time.Now()) + errWaitTimeoutWithName := extendErrWaitTimeout(wait.ErrWaitTimeout, info) if timeout < 0 { // we're out of time - return gottenObj, false, wait.ErrWaitTimeout + return gottenObj, false, errWaitTimeoutWithName } ctx, cancel := watchtools.ContextWithOptionalTimeout(context.Background(), o.Timeout) @@ -401,9 +403,9 @@ func (w ConditionalWait) IsConditionMet(info *resource.Info, o *WaitOptions) (ru continue case err == wait.ErrWaitTimeout: if watchEvent != nil { - return watchEvent.Object, false, wait.ErrWaitTimeout + return watchEvent.Object, false, errWaitTimeoutWithName } - return gottenObj, false, wait.ErrWaitTimeout + return gottenObj, false, errWaitTimeoutWithName default: return gottenObj, false, err } @@ -449,3 +451,7 @@ func (w ConditionalWait) isConditionMet(event watch.Event) (bool, error) { obj := event.Object.(*unstructured.Unstructured) return w.checkCondition(obj) } + +func extendErrWaitTimeout(err error, info *resource.Info) error { + return fmt.Errorf("%s on %s/%s", err.Error(), info.Mapping.Resource.Resource, info.Name) +} diff --git a/pkg/kubectl/cmd/wait/wait_test.go b/pkg/kubectl/cmd/wait/wait_test.go index 3f14f9d5379..34395c4bd88 100644 --- a/pkg/kubectl/cmd/wait/wait_test.go +++ b/pkg/kubectl/cmd/wait/wait_test.go @@ -18,11 +18,9 @@ package wait import ( "io/ioutil" - "testing" - - "time" - "strings" + "testing" + "time" "github.com/davecgh/go-spew/spew" @@ -32,7 +30,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/cli-runtime/pkg/genericclioptions/printers" @@ -203,7 +200,7 @@ func TestWaitForDeletion(t *testing.T) { }, timeout: 1 * time.Second, - expectedErr: wait.ErrWaitTimeout.Error(), + expectedErr: "timed out waiting for the condition on theresource/name-foo", validateActions: func(t *testing.T, actions []clienttesting.Action) { if len(actions) != 2 { t.Fatal(spew.Sdump(actions)) @@ -254,7 +251,7 @@ func TestWaitForDeletion(t *testing.T) { }, timeout: 3 * time.Second, - expectedErr: wait.ErrWaitTimeout.Error(), + expectedErr: "timed out waiting for the condition on theresource/name-foo", validateActions: func(t *testing.T, actions []clienttesting.Action) { if len(actions) != 4 { t.Fatal(spew.Sdump(actions)) @@ -502,7 +499,7 @@ func TestWaitForCondition(t *testing.T) { }, timeout: 1 * time.Second, - expectedErr: wait.ErrWaitTimeout.Error(), + expectedErr: "timed out waiting for the condition on theresource/name-foo", validateActions: func(t *testing.T, actions []clienttesting.Action) { if len(actions) != 2 { t.Fatal(spew.Sdump(actions)) @@ -553,7 +550,7 @@ func TestWaitForCondition(t *testing.T) { }, timeout: 3 * time.Second, - expectedErr: wait.ErrWaitTimeout.Error(), + expectedErr: "timed out waiting for the condition on theresource/name-foo", validateActions: func(t *testing.T, actions []clienttesting.Action) { if len(actions) != 4 { t.Fatal(spew.Sdump(actions))