@@ -23,21 +23,11 @@ import (
23
23
24
24
// Partial string to correctly filter warning events.
25
25
// Has to be lower case for correct case insensitive comparison.
26
- const FAILED_REASON_PARTIAL = "failed"
27
-
28
- // Contains basic information about event related to a pod
29
- type PodEvent struct {
30
- // Short, machine understandable string that gives the reason
31
- // for this event being generated.
32
- Reason string `json:"reason"`
33
-
34
- // A human-readable description of the status of related pod.
35
- Message string `json:"message"`
36
- }
26
+ const FailedReasonPartial = "failed"
37
27
38
28
// Returns warning pod events based on given list of pods.
39
29
// TODO(floreks) : Import and use Set instead of custom function to get rid of duplicates
40
- func GetPodsEventWarnings (client client.Interface , pods []api.Pod ) (result []PodEvent , err error ) {
30
+ func GetPodsEventWarnings (client client.Interface , pods []api.Pod ) (result []Event , err error ) {
41
31
for _ , pod := range pods {
42
32
if ! isRunningOrSucceeded (pod ) {
43
33
log .Printf ("Getting warning events from pod: %s" , pod .Name )
@@ -56,20 +46,21 @@ func GetPodsEventWarnings(client client.Interface, pods []api.Pod) (result []Pod
56
46
57
47
// Returns list of Pod Event model objects based on kubernetes API event list object
58
48
// Event list object is filtered to get only warning events.
59
- func getPodsEventWarnings (eventList * api.EventList ) []PodEvent {
60
- result := make ([]PodEvent , 0 )
49
+ func getPodsEventWarnings (eventList * api.EventList ) []Event {
50
+ result := make ([]Event , 0 )
61
51
62
52
var events []api.Event
63
- if isTypeFilled (eventList .Items ) {
64
- events = filterEventsByType (eventList .Items , api .EventTypeWarning )
65
- } else {
66
- events = filterEventsByReason (eventList .Items , FAILED_REASON_PARTIAL )
53
+ if ! isTypeFilled (eventList .Items ) {
54
+ eventList .Items = fillEventsType (eventList .Items )
67
55
}
68
56
57
+ events = filterEventsByType (eventList .Items , api .EventTypeWarning )
58
+
69
59
for _ , event := range events {
70
- result = append (result , PodEvent {
60
+ result = append (result , Event {
71
61
Message : event .Message ,
72
62
Reason : event .Reason ,
63
+ Type : event .Type ,
73
64
})
74
65
}
75
66
@@ -93,23 +84,6 @@ func filterEventsByType(events []api.Event, eventType string) []api.Event {
93
84
return result
94
85
}
95
86
96
- // Filters kubernetes API event objects based on reason property.
97
- // Empty string will return all events.
98
- func filterEventsByReason (events []api.Event , partial string ) []api.Event {
99
- if len (partial ) == 0 || len (events ) == 0 {
100
- return events
101
- }
102
-
103
- result := make ([]api.Event , 0 )
104
- for _ , event := range events {
105
- if strings .Contains (strings .ToLower (event .Reason ), partial ) {
106
- result = append (result , event )
107
- }
108
- }
109
-
110
- return result
111
- }
112
-
113
87
// Returns true if all given events type is filled, false otherwise.
114
88
// This is needed as some older versions of kubernetes do not have Type property filled.
115
89
func isTypeFilled (events []api.Event ) bool {
@@ -126,10 +100,23 @@ func isTypeFilled(events []api.Event) bool {
126
100
return true
127
101
}
128
102
103
+ // Based on event Reason fills event Type in order to allow correct filtering by Type.
104
+ func fillEventsType (events []api.Event ) []api.Event {
105
+ for i , _ := range events {
106
+ if strings .Contains (strings .ToLower (events [i ].Reason ), FailedReasonPartial ) {
107
+ events [i ].Type = api .EventTypeWarning
108
+ } else {
109
+ events [i ].Type = api .EventTypeNormal
110
+ }
111
+ }
112
+
113
+ return events
114
+ }
115
+
129
116
// Removes duplicate strings from the slice
130
- func removeDuplicates (slice []PodEvent ) []PodEvent {
117
+ func removeDuplicates (slice []Event ) []Event {
131
118
visited := make (map [string ]bool , 0 )
132
- result := make ([]PodEvent , 0 )
119
+ result := make ([]Event , 0 )
133
120
134
121
for _ , elem := range slice {
135
122
if ! visited [elem .Reason ] {
0 commit comments