Change:
<!-- Please only use this template for submitting enhancement requests --What would you like to be : let's say I run If the deployment is comes up in time it tells me which deployment is up, but if it times out it doesn't tell me on which deployment/resource. Could it be Why is this needed: That would make it easier to use, and the information provided is the same irregardless on whether the condition is met or not
/sig cli
Sounds reasonable for me, i can take care of this one if someone from owners will approve it as a feature.
/assign Zyqsempai
GitHub didn't allow me to assign the following users: Zyqsempai. Note that only and repo collaborators can be assigned and that issues/PRs can only have 10 assignees at the same time. For more information please see <detailsIn response to : /assign Zyqsempai Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details

Discussion:
"//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", <del> "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", </del> "//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",

} timeout := endTime.Sub(time.Now()) <ins> errWaitTimeoutWithName := extendErrWaitTimeout(wait.ErrWaitTimeout, info) </ins> if timeout < 0 { // we're out of time <del> return gottenObj, false, wait.ErrWaitTimeout </del> <ins> return gottenObj, false, errWaitTimeoutWithName </ins> } ctx, cancel := watchtools.ContextWithOptionalTimeout(context.Background(), o.Timeout)

continue case err == wait.ErrWaitTimeout: if watchEvent != nil { <del> return watchEvent.Object, false, wait.ErrWaitTimeout </del> <ins> return watchEvent.Object, false, errWaitTimeoutWithName </ins> } <del> return gottenObj, false, wait.ErrWaitTimeout </del> <ins> return gottenObj, false, errWaitTimeoutWithName </ins> default: return gottenObj, false, err }

obj := event.Object.(*unstructured.Unstructured) return w.checkCondition(obj) } <ins> func extendErrWaitTimeout(err error, info *resource.Info) error { return fmt.Errorf("%s on %s/%s", err.Error(), info.Mapping.Resource.Resource, info.Name) } </ins>

import ( "io/ioutil" <ins> "strings" </ins> "testing" "time" <del> "strings" </del> "github.com/davecgh/go-spew/spew" "k8s.io/apimachinery/pkg/api/meta"

"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" <del> "k8s.io/apimachinery/pkg/util/wait" </del> "k8s.io/apimachinery/pkg/watch" "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/cli-runtime/pkg/genericclioptions/printers"

}, timeout: 1 * time.Second, <del> expectedErr: wait.ErrWaitTimeout.Error(), </del> <ins> expectedErr: "timed out waiting for the condition on theresource/name-foo", </ins> validateActions: func(t *testing.T, actions []clienttesting.Action) { if len(actions) != 2 { t.Fatal(spew.Sdump(actions))

}, timeout: 3 * time.Second, <del> expectedErr: wait.ErrWaitTimeout.Error(), </del> <ins> expectedErr: "timed out waiting for the condition on theresource/name-foo", </ins> validateActions: func(t *testing.T, actions []clienttesting.Action) { if len(actions) != 4 { t.Fatal(spew.Sdump(actions))