Skip to content

Commit ceb8c2f

Browse files
committed
Fix v1beta1 events printing in kubectl
printers: handle series when printing events printers: handle singleton when printing events Signed-off-by: Damien Grisonnet <[email protected]>
1 parent 5016c22 commit ceb8c2f

File tree

2 files changed

+67
-5
lines changed

2 files changed

+67
-5
lines changed

pkg/printers/internalversion/printers.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1673,11 +1673,25 @@ func printEvent(obj *api.Event, options printers.GenerateOptions) ([]metav1.Tabl
16731673
if obj.FirstTimestamp.IsZero() {
16741674
firstTimestamp = translateMicroTimestampSince(obj.EventTime)
16751675
}
1676+
16761677
lastTimestamp := translateTimestampSince(obj.LastTimestamp)
16771678
if obj.LastTimestamp.IsZero() {
16781679
lastTimestamp = firstTimestamp
16791680
}
16801681

1682+
count := obj.Count
1683+
if obj.Series != nil {
1684+
lastTimestamp = translateMicroTimestampSince(obj.Series.LastObservedTime)
1685+
// When a series is created for the first time, its count is set to 1.
1686+
// However, for a series to be created, there needs to be an isomorphic
1687+
// singleton event created beforehand. This singleton event is not
1688+
// counted in the series count which is why one is added here.
1689+
count = obj.Series.Count + 1
1690+
} else if count == 0 {
1691+
// Singleton events don't have a count set in the new API.
1692+
count = 1
1693+
}
1694+
16811695
var target string
16821696
if len(obj.InvolvedObject.Name) > 0 {
16831697
target = fmt.Sprintf("%s/%s", strings.ToLower(obj.InvolvedObject.Kind), obj.InvolvedObject.Name)
@@ -1694,7 +1708,7 @@ func printEvent(obj *api.Event, options printers.GenerateOptions) ([]metav1.Tabl
16941708
formatEventSource(obj.Source),
16951709
strings.TrimSpace(obj.Message),
16961710
firstTimestamp,
1697-
int64(obj.Count),
1711+
int64(count),
16981712
obj.Name,
16991713
)
17001714
} else {

pkg/printers/internalversion/printers_test.go

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,11 @@ func TestPrintEvent(t *testing.T) {
178178
FirstTimestamp: metav1.Time{Time: time.Now().UTC().AddDate(0, 0, -3)},
179179
Count: 1,
180180
Type: api.EventTypeWarning,
181-
ObjectMeta: metav1.ObjectMeta{Name: "event3"},
181+
ObjectMeta: metav1.ObjectMeta{Name: "event4"},
182182
},
183183
options: printers.GenerateOptions{Wide: true},
184184
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
185-
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event3"}}},
185+
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event4"}}},
186186
},
187187
// Basic event, w/o FirstTimestamp and LastTimestamp set
188188
{
@@ -201,11 +201,59 @@ func TestPrintEvent(t *testing.T) {
201201
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
202202
Count: 1,
203203
Type: api.EventTypeWarning,
204-
ObjectMeta: metav1.ObjectMeta{Name: "event3"},
204+
ObjectMeta: metav1.ObjectMeta{Name: "event5"},
205205
},
206206
options: printers.GenerateOptions{Wide: true},
207207
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
208-
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event3"}}},
208+
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event5"}}},
209+
},
210+
// Basic event serie, w/o FirstTimestamp, LastTimestamp and Count set
211+
{
212+
event: api.Event{
213+
Source: api.EventSource{
214+
Component: "kubelet",
215+
Host: "Node1",
216+
},
217+
InvolvedObject: api.ObjectReference{
218+
Kind: "Deployment",
219+
Name: "Deployment Name",
220+
FieldPath: "spec.containers{foo}",
221+
},
222+
Series: &api.EventSeries{
223+
Count: 1,
224+
LastObservedTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -2)},
225+
},
226+
Reason: "Event Reason",
227+
Message: "Message Data",
228+
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
229+
Type: api.EventTypeWarning,
230+
ObjectMeta: metav1.ObjectMeta{Name: "event6"},
231+
},
232+
options: printers.GenerateOptions{Wide: true},
233+
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
234+
expected: []metav1.TableRow{{Cells: []interface{}{"2d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(2), "event6"}}},
235+
},
236+
// Singleton event, w/o FirstTimestamp, LastTimestamp and Count set
237+
{
238+
event: api.Event{
239+
Source: api.EventSource{
240+
Component: "kubelet",
241+
Host: "Node1",
242+
},
243+
InvolvedObject: api.ObjectReference{
244+
Kind: "Deployment",
245+
Name: "Deployment Name",
246+
FieldPath: "spec.containers{foo}",
247+
},
248+
Reason: "Event Reason",
249+
Message: "Message Data",
250+
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
251+
Type: api.EventTypeWarning,
252+
ObjectMeta: metav1.ObjectMeta{Name: "event7"},
253+
},
254+
options: printers.GenerateOptions{Wide: true},
255+
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
256+
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event7"}}},
209257
},
210258
}
211259

0 commit comments

Comments
 (0)