diff --git a/go.mod b/go.mod index 1917eddf4..8c54a598c 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( k8s.io/apimachinery v0.0.0-20220327010740-1992dccd17de k8s.io/cli-runtime v0.0.0-20220328052852-84e333d968d4 k8s.io/client-go v0.0.0-20220327011239-402aa66c5cad - k8s.io/component-base v0.0.0-20220327011759-ab4264d408ec + k8s.io/component-base v0.0.0-20220328131428-cf687172c5c1 k8s.io/component-helpers v0.0.0-20220327011904-6a03ec91fb2a k8s.io/klog/v2 v2.60.1 k8s.io/kube-openapi v0.0.0-20220324211241-9f9c01d62a3a @@ -53,7 +53,7 @@ replace ( k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20220328052852-84e333d968d4 k8s.io/client-go => k8s.io/client-go v0.0.0-20220327011239-402aa66c5cad k8s.io/code-generator => k8s.io/code-generator v0.0.0-20220327010549-a207ba43f29b - k8s.io/component-base => k8s.io/component-base v0.0.0-20220327011759-ab4264d408ec + k8s.io/component-base => k8s.io/component-base v0.0.0-20220328131428-cf687172c5c1 k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20220327011904-6a03ec91fb2a k8s.io/metrics => k8s.io/metrics v0.0.0-20220327013221-9d8785aa9377 ) diff --git a/go.sum b/go.sum index 311c3d9a4..3e8781b1f 100644 --- a/go.sum +++ b/go.sum @@ -857,8 +857,8 @@ k8s.io/cli-runtime v0.0.0-20220328052852-84e333d968d4/go.mod h1:hU5Muk4FAIq+AnDB k8s.io/client-go v0.0.0-20220327011239-402aa66c5cad h1:v2udgOBdg/+3kM7nGJtQfjvnlsjgA0wdR9sJjiX7UfQ= k8s.io/client-go v0.0.0-20220327011239-402aa66c5cad/go.mod h1:HCq7QlEN/lEZ7hg4X9ldPo4rbktT3jtB83/5IJmurlw= k8s.io/code-generator v0.0.0-20220327010549-a207ba43f29b/go.mod h1:K+f3PS8AJPkGO9NJoAqq6J1NMsr37Ey1IaQrQ2c97yQ= -k8s.io/component-base v0.0.0-20220327011759-ab4264d408ec h1:FJOEmHL/fuAEoY/W+SUmBrfrN4lwqBpAGPIAnS4yGpA= -k8s.io/component-base v0.0.0-20220327011759-ab4264d408ec/go.mod h1:ovi3X90kD1M022w7Jk4rQ0JiXQSCTZGXTP3xC65q2FM= +k8s.io/component-base v0.0.0-20220328131428-cf687172c5c1 h1:u12RSj/wUOlBMijVItJMa5oFTamtWwcJGpl0m64M3Vc= +k8s.io/component-base v0.0.0-20220328131428-cf687172c5c1/go.mod h1:bv8VKJjKvywGpxYTIs9+A7blbVBaoOSApzZwU1DLK/8= k8s.io/component-helpers v0.0.0-20220327011904-6a03ec91fb2a h1:euIo+fgv9QlPQLbNyfZKs0u1E7ZwvCJ/4K8SYwgaL/4= k8s.io/component-helpers v0.0.0-20220327011904-6a03ec91fb2a/go.mod h1:uK2zz8FPyEfyDcix2/Gv3te5X2sgHzr/wS27VUbEIxA= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= diff --git a/pkg/describe/describe.go b/pkg/describe/describe.go index 65044a44a..2a8bf9cc5 100644 --- a/pkg/describe/describe.go +++ b/pkg/describe/describe.go @@ -3519,8 +3519,17 @@ func (d *NodeDescriber) Describe(namespace, name string, describerSettings Descr klog.Errorf("Unable to construct reference to '%#v': %v", node, err) } else { // TODO: We haven't decided the namespace for Node object yet. - ref.UID = types.UID(ref.Name) + // there are two UIDs for host events: + // controller use node.uid + // kubelet use node.name + // TODO: Uniform use of UID events, _ = searchEvents(d.CoreV1(), ref, describerSettings.ChunkSize) + + ref.UID = types.UID(ref.Name) + eventsInvName, _ := searchEvents(d.CoreV1(), ref, describerSettings.ChunkSize) + + // Merge the results of two queries + events.Items = append(events.Items, eventsInvName.Items...) } } diff --git a/pkg/describe/describe_test.go b/pkg/describe/describe_test.go index 03b4b7dca..7314feb20 100644 --- a/pkg/describe/describe_test.go +++ b/pkg/describe/describe_test.go @@ -4934,6 +4934,7 @@ func TestDescribeNode(t *testing.T) { &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", + UID: "uid", }, Spec: corev1.NodeSpec{ Unschedulable: true, @@ -4986,6 +4987,42 @@ func TestDescribeNode(t *testing.T) { Phase: corev1.PodRunning, }, }, + &corev1.EventList{ + Items: []corev1.Event{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "event-1", + Namespace: "default", + }, + InvolvedObject: corev1.ObjectReference{ + Kind: "Node", + Name: "bar", + UID: "bar", + }, + Message: "Node bar status is now: NodeHasNoDiskPressure", + FirstTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + LastTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + Count: 1, + Type: corev1.EventTypeNormal, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: "event-2", + Namespace: "default", + }, + InvolvedObject: corev1.ObjectReference{ + Kind: "Node", + Name: "bar", + UID: "0ceac5fb-a393-49d7-b04f-9ea5f18de5e9", + }, + Message: "Node bar status is now: NodeReady", + FirstTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + LastTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + Count: 2, + Type: corev1.EventTypeNormal, + }, + }, + }, ) c := &describeClient{T: t, Namespace: "foo", Interface: fake} d := NodeDescriber{c} @@ -5003,7 +5040,9 @@ func TestDescribeNode(t *testing.T) { memory 1Gi (8%) 2Gi (16%) ephemeral-storage 0 (0%) 0 (0%) hugepages-1Gi 0 (0%) 0 (0%) - hugepages-2Mi 512Mi (25%) 512Mi (25%)`} + hugepages-2Mi 512Mi (25%) 512Mi (25%)`, + `Node bar status is now: NodeHasNoDiskPressure`, + `Node bar status is now: NodeReady`} for _, expected := range expectedOut { if !strings.Contains(out, expected) { t.Errorf("expected to find %q in output: %q", expected, out)