Skip to content

Commit abc28ed

Browse files
committed
core api event support
1 parent a7ce508 commit abc28ed

9 files changed

+43
-1
lines changed

README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Latest image
1919

2020
```
21-
us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.4
21+
us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
2222
```
2323

2424
# Usage
@@ -92,6 +92,7 @@ resourcesToWatch:
9292
secret: false
9393
configmap: false
9494
ingress: false
95+
coreevent: false
9596
event: true
9697
slack:
9798
channel: '#YOUR_CHANNEL'
@@ -148,6 +149,7 @@ resource:
148149
secret: false
149150
configmap: false
150151
ingress: false
152+
coreevent: false
151153
event: true
152154
```
153155

@@ -344,6 +346,7 @@ data:
344346
serviceaccount: false
345347
services: true
346348
event: true
349+
coreevent: false
347350
```
348351
349352
### flock:
@@ -426,6 +429,7 @@ resource:
426429
configmap: false
427430
ingress: false
428431
event: true
432+
coreevent: false
429433
namespace: ""
430434

431435
```
@@ -467,6 +471,7 @@ Flags:
467471
--sa watch for service accounts
468472
--secret watch for plain secrets
469473
--svc watch for services
474+
--coreevent watch for events from the kubernetes core api. (Old events api, replaced in kubernetes 1.19)
470475

471476
Use "kubewatch resource [command] --help" for more information about a command.
472477

@@ -501,6 +506,7 @@ Global Flags:
501506
--sa watch for service accounts
502507
--secret watch for plain secrets
503508
--svc watch for services
509+
--coreevent watch for events from the kubernetes core api. (Old events api, replaced in kubernetes 1.19)
504510

505511
```
506512

cmd/resource.go

+5
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ func configureResource(operation string, cmd *cobra.Command, conf *config.Config
149149
"statefulset",
150150
&conf.Resource.StatefulSet,
151151
},
152+
{
153+
"coreevent",
154+
&conf.Resource.CoreEvent,
155+
},
152156
}
153157

154158
for _, flag := range flags {
@@ -197,4 +201,5 @@ func init() {
197201
resourceConfigCmd.PersistentFlags().Bool("clusterrole", false, "watch for cluster roles")
198202
resourceConfigCmd.PersistentFlags().Bool("clusterrolebinding", false, "watch for cluster roles binding")
199203
resourceConfigCmd.PersistentFlags().Bool("sa", false, "watch for service accounts")
204+
resourceConfigCmd.PersistentFlags().Bool("coreevent", false, "watch for events (old events object)")
200205
}

config/config.go

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ type Resource struct {
7070
Ingress bool `json:"ing"`
7171
HPA bool `json:"hpa"`
7272
Event bool `json:"event"`
73+
CoreEvent bool `json:"coreevent"`
7374
}
7475

7576
// Config struct contains kubewatch configuration

examples/conf/kubewatch.conf.flock.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ resource:
1212
persistentvolume: false
1313
ingress: false
1414
event: false
15+
coreevent: false

examples/conf/kubewatch.conf.hipchat.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ resource:
1414
persistentvolume: false
1515
ingress: false
1616
event: false
17+
coreevent: false

examples/conf/kubewatch.conf.mattermost.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ resource:
1414
persistentvolume: false
1515
ingress: false
1616
event: false
17+
coreevent: false

kubewatch-configmap.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ data:
2020
secret: false
2121
configmap: false
2222
hpa: false
23+
coreevent: false
2324
event: true

pkg/controller/controller.go

+24
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,30 @@ func Start(conf *config.Config, eventHandler handlers.Handler) {
9797
}
9898

9999
// User Configured Events
100+
if conf.Resource.CoreEvent {
101+
allCoreEventsInformer := cache.NewSharedIndexInformer(
102+
&cache.ListWatch{
103+
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
104+
options.FieldSelector = ""
105+
return kubeClient.CoreV1().Events(conf.Namespace).List(context.Background(), options)
106+
},
107+
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
108+
options.FieldSelector = ""
109+
return kubeClient.CoreV1().Events(conf.Namespace).Watch(context.Background(), options)
110+
},
111+
},
112+
&events_v1.Event{},
113+
0, //Skip resync
114+
cache.Indexers{},
115+
)
116+
117+
allCoreEventsController := newResourceController(kubeClient, eventHandler, allCoreEventsInformer, objName(api_v1.Event{}), V1)
118+
stopAllCoreEventsCh := make(chan struct{})
119+
defer close(stopAllCoreEventsCh)
120+
121+
go allCoreEventsController.Run(stopAllCoreEventsCh)
122+
}
123+
100124
if conf.Resource.Event {
101125
allEventsInformer := cache.NewSharedIndexInformer(
102126
&cache.ListWatch{

pkg/utils/k8sutil.go

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ func GetObjectMetaData(obj interface{}) (objectMeta meta_v1.ObjectMeta) {
9898
objectMeta = object.ObjectMeta
9999
case *api_v1.ConfigMap:
100100
objectMeta = object.ObjectMeta
101+
case *api_v1.Event:
102+
objectMeta = object.ObjectMeta
101103
case *events_v1.Event:
102104
objectMeta = object.ObjectMeta
103105
}

0 commit comments

Comments
 (0)