Skip to content

Commit 83f50ba

Browse files
authored
Merge pull request kubernetes#92542 from dgrisonnet/cli-fix-event-series
Fix v1beta1.Event printing in kubectl
2 parents 55d77ad + ceb8c2f commit 83f50ba

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
@@ -1725,11 +1725,25 @@ func printEvent(obj *api.Event, options printers.GenerateOptions) ([]metav1.Tabl
17251725
if obj.FirstTimestamp.IsZero() {
17261726
firstTimestamp = translateMicroTimestampSince(obj.EventTime)
17271727
}
1728+
17281729
lastTimestamp := translateTimestampSince(obj.LastTimestamp)
17291730
if obj.LastTimestamp.IsZero() {
17301731
lastTimestamp = firstTimestamp
17311732
}
17321733

1734+
count := obj.Count
1735+
if obj.Series != nil {
1736+
lastTimestamp = translateMicroTimestampSince(obj.Series.LastObservedTime)
1737+
// When a series is created for the first time, its count is set to 1.
1738+
// However, for a series to be created, there needs to be an isomorphic
1739+
// singleton event created beforehand. This singleton event is not
1740+
// counted in the series count which is why one is added here.
1741+
count = obj.Series.Count + 1
1742+
} else if count == 0 {
1743+
// Singleton events don't have a count set in the new API.
1744+
count = 1
1745+
}
1746+
17331747
var target string
17341748
if len(obj.InvolvedObject.Name) > 0 {
17351749
target = fmt.Sprintf("%s/%s", strings.ToLower(obj.InvolvedObject.Kind), obj.InvolvedObject.Name)
@@ -1746,7 +1760,7 @@ func printEvent(obj *api.Event, options printers.GenerateOptions) ([]metav1.Tabl
17461760
formatEventSource(obj.Source),
17471761
strings.TrimSpace(obj.Message),
17481762
firstTimestamp,
1749-
int64(obj.Count),
1763+
int64(count),
17501764
obj.Name,
17511765
)
17521766
} 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)