mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #92542 from dgrisonnet/cli-fix-event-series
Fix v1beta1.Event printing in kubectl
This commit is contained in:
commit
83f50ba0e8
@ -1725,11 +1725,25 @@ func printEvent(obj *api.Event, options printers.GenerateOptions) ([]metav1.Tabl
|
|||||||
if obj.FirstTimestamp.IsZero() {
|
if obj.FirstTimestamp.IsZero() {
|
||||||
firstTimestamp = translateMicroTimestampSince(obj.EventTime)
|
firstTimestamp = translateMicroTimestampSince(obj.EventTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
lastTimestamp := translateTimestampSince(obj.LastTimestamp)
|
lastTimestamp := translateTimestampSince(obj.LastTimestamp)
|
||||||
if obj.LastTimestamp.IsZero() {
|
if obj.LastTimestamp.IsZero() {
|
||||||
lastTimestamp = firstTimestamp
|
lastTimestamp = firstTimestamp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count := obj.Count
|
||||||
|
if obj.Series != nil {
|
||||||
|
lastTimestamp = translateMicroTimestampSince(obj.Series.LastObservedTime)
|
||||||
|
// When a series is created for the first time, its count is set to 1.
|
||||||
|
// However, for a series to be created, there needs to be an isomorphic
|
||||||
|
// singleton event created beforehand. This singleton event is not
|
||||||
|
// counted in the series count which is why one is added here.
|
||||||
|
count = obj.Series.Count + 1
|
||||||
|
} else if count == 0 {
|
||||||
|
// Singleton events don't have a count set in the new API.
|
||||||
|
count = 1
|
||||||
|
}
|
||||||
|
|
||||||
var target string
|
var target string
|
||||||
if len(obj.InvolvedObject.Name) > 0 {
|
if len(obj.InvolvedObject.Name) > 0 {
|
||||||
target = fmt.Sprintf("%s/%s", strings.ToLower(obj.InvolvedObject.Kind), obj.InvolvedObject.Name)
|
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
|
|||||||
formatEventSource(obj.Source),
|
formatEventSource(obj.Source),
|
||||||
strings.TrimSpace(obj.Message),
|
strings.TrimSpace(obj.Message),
|
||||||
firstTimestamp,
|
firstTimestamp,
|
||||||
int64(obj.Count),
|
int64(count),
|
||||||
obj.Name,
|
obj.Name,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
@ -178,11 +178,11 @@ func TestPrintEvent(t *testing.T) {
|
|||||||
FirstTimestamp: metav1.Time{Time: time.Now().UTC().AddDate(0, 0, -3)},
|
FirstTimestamp: metav1.Time{Time: time.Now().UTC().AddDate(0, 0, -3)},
|
||||||
Count: 1,
|
Count: 1,
|
||||||
Type: api.EventTypeWarning,
|
Type: api.EventTypeWarning,
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "event3"},
|
ObjectMeta: metav1.ObjectMeta{Name: "event4"},
|
||||||
},
|
},
|
||||||
options: printers.GenerateOptions{Wide: true},
|
options: printers.GenerateOptions{Wide: true},
|
||||||
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
|
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
|
||||||
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event3"}}},
|
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event4"}}},
|
||||||
},
|
},
|
||||||
// Basic event, w/o FirstTimestamp and LastTimestamp set
|
// Basic event, w/o FirstTimestamp and LastTimestamp set
|
||||||
{
|
{
|
||||||
@ -201,11 +201,59 @@ func TestPrintEvent(t *testing.T) {
|
|||||||
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
|
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
|
||||||
Count: 1,
|
Count: 1,
|
||||||
Type: api.EventTypeWarning,
|
Type: api.EventTypeWarning,
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "event3"},
|
ObjectMeta: metav1.ObjectMeta{Name: "event5"},
|
||||||
},
|
},
|
||||||
options: printers.GenerateOptions{Wide: true},
|
options: printers.GenerateOptions{Wide: true},
|
||||||
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
|
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
|
||||||
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event3"}}},
|
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event5"}}},
|
||||||
|
},
|
||||||
|
// Basic event serie, w/o FirstTimestamp, LastTimestamp and Count set
|
||||||
|
{
|
||||||
|
event: api.Event{
|
||||||
|
Source: api.EventSource{
|
||||||
|
Component: "kubelet",
|
||||||
|
Host: "Node1",
|
||||||
|
},
|
||||||
|
InvolvedObject: api.ObjectReference{
|
||||||
|
Kind: "Deployment",
|
||||||
|
Name: "Deployment Name",
|
||||||
|
FieldPath: "spec.containers{foo}",
|
||||||
|
},
|
||||||
|
Series: &api.EventSeries{
|
||||||
|
Count: 1,
|
||||||
|
LastObservedTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -2)},
|
||||||
|
},
|
||||||
|
Reason: "Event Reason",
|
||||||
|
Message: "Message Data",
|
||||||
|
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
|
||||||
|
Type: api.EventTypeWarning,
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "event6"},
|
||||||
|
},
|
||||||
|
options: printers.GenerateOptions{Wide: true},
|
||||||
|
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
|
||||||
|
expected: []metav1.TableRow{{Cells: []interface{}{"2d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(2), "event6"}}},
|
||||||
|
},
|
||||||
|
// Singleton event, w/o FirstTimestamp, LastTimestamp and Count set
|
||||||
|
{
|
||||||
|
event: api.Event{
|
||||||
|
Source: api.EventSource{
|
||||||
|
Component: "kubelet",
|
||||||
|
Host: "Node1",
|
||||||
|
},
|
||||||
|
InvolvedObject: api.ObjectReference{
|
||||||
|
Kind: "Deployment",
|
||||||
|
Name: "Deployment Name",
|
||||||
|
FieldPath: "spec.containers{foo}",
|
||||||
|
},
|
||||||
|
Reason: "Event Reason",
|
||||||
|
Message: "Message Data",
|
||||||
|
EventTime: metav1.MicroTime{Time: time.Now().UTC().AddDate(0, 0, -3)},
|
||||||
|
Type: api.EventTypeWarning,
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "event7"},
|
||||||
|
},
|
||||||
|
options: printers.GenerateOptions{Wide: true},
|
||||||
|
// Columns: Last Seen, Type, Reason, Object, Subobject, Message, First Seen, Count, Name
|
||||||
|
expected: []metav1.TableRow{{Cells: []interface{}{"3d", "Warning", "Event Reason", "deployment/Deployment Name", "spec.containers{foo}", "kubelet, Node1", "Message Data", "3d", int64(1), "event7"}}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user