From 3b2fa9618ddb5edb124acd244c5c4a57fda7a2b9 Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Mon, 24 Nov 2014 15:17:28 -0800 Subject: [PATCH] Relax search criteria to find both pod & bound pod events --- pkg/client/events.go | 21 ++++++++++++++------- pkg/kubectl/describe.go | 9 +++++++-- 2 files changed, 21 insertions(+), 9 deletions(-) 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)