-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwatcher_pod.go
56 lines (51 loc) · 1.3 KB
/
watcher_pod.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package ek8s
import (
"github.com/gotomicro/ego/core/elog"
"go.uber.org/zap"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/watch"
)
func (c *WatcherApp) addPod(obj interface{}) {
c.logger.Debug("addPod", zap.Any("obj", obj))
p, ok := obj.(*v1.Pod)
if !ok {
c.logger.Warn("pod-informer got object %T not *v1.Pod", elog.FieldValueAny(obj))
return
}
c.queue.Add(&KubernetesEvent{
EventType: watch.Added,
IPs: []string{p.Status.PodIP},
})
}
func (c *WatcherApp) updatePod(oldObj, newObj interface{}) {
c.logger.Debug("updatePod", zap.Any("oldObj", oldObj), zap.Any("newObj", newObj))
op, ok := oldObj.(*v1.Pod)
if !ok {
c.logger.Warnf("pod-informer got object %T not *v1.Pod", oldObj)
return
}
np, ok := newObj.(*v1.Pod)
if !ok {
c.logger.Warnf("pod-informer got object %T not *v1.Pod", newObj)
return
}
if op.GetResourceVersion() == np.GetResourceVersion() {
return
}
c.queue.Add(&KubernetesEvent{
IPs: []string{np.Status.PodIP},
EventType: watch.Modified,
})
}
func (c *WatcherApp) deletePod(obj interface{}) {
c.logger.Debug("deletePod", zap.Any("obj", obj))
p, ok := obj.(*v1.Pod)
if !ok {
c.logger.Warnf("pod-informer got object %T not *v1.Pod", obj)
return
}
c.queue.Add(&KubernetesEvent{
IPs: []string{p.Status.PodIP},
EventType: watch.Deleted,
})
}