diff --git a/pkg/client/events.go b/pkg/client/events.go index a8cd6dc66d1..882515aa10d 100644 --- a/pkg/client/events.go +++ b/pkg/client/events.go @@ -117,14 +117,21 @@ func (e *events) Search(objOrRef runtime.Object) (*api.EventList, error) { if err != nil { return nil, err } - // TODO: search by UID if it's set - fields := labels.Set{ - "involvedObject.kind": ref.Kind, - "involvedObject.namespace": ref.Namespace, - "involvedObject.name": ref.Name, - }.AsSelector() if e.namespace != "" && ref.Namespace != e.namespace { return nil, fmt.Errorf("won't be able to find any events of namespace '%v' in namespace '%v'", ref.Namespace, e.namespace) } - return e.List(labels.Everything(), fields) + fields := labels.Set{} + if ref.Kind != "" { + fields["involvedObject.kind"] = ref.Kind + } + if ref.Namespace != "" { + fields["involvedObject.namespace"] = ref.Namespace + } + if ref.Name != "" { + fields["involvedObject.name"] = ref.Name + } + if ref.UID != "" { + fields["involvedObject.uid"] = ref.UID + } + return e.List(labels.Everything(), fields.AsSelector()) } diff --git a/pkg/kubectl/describe.go b/pkg/kubectl/describe.go index 7c5f1da9f82..8543d44f3d4 100644 --- a/pkg/kubectl/describe.go +++ b/pkg/kubectl/describe.go @@ -66,7 +66,6 @@ func (d *PodDescriber) Describe(namespace, name string) (string, error) { labels.Everything(), labels.Set{ "involvedObject.name": name, - "involvedObject.kind": "Pod", "involvedObject.namespace": namespace, }.AsSelector(), ) @@ -86,7 +85,13 @@ func (d *PodDescriber) Describe(namespace, name string) (string, error) { glog.Errorf("Unable to convert pod manifest: %v", err) } - events, _ := d.Events(namespace).Search(pod) + var events *api.EventList + if ref, err := api.GetReference(pod); err != nil { + glog.Errorf("Unable to construct reference to '%#v': %v", pod, err) + } else { + ref.Kind = "" // Find BoundPod objects, too! + events, _ = d.Events(namespace).Search(ref) + } return tabbedString(func(out io.Writer) error { fmt.Fprintf(out, "Name:\t%s\n", pod.Name)