-
Notifications
You must be signed in to change notification settings - Fork 390
/
ingress_monitor.py
46 lines (39 loc) · 1.48 KB
/
ingress_monitor.py
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
#
# Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
#
import json
import gevent
from kube_monitor import KubeMonitor
from kube_manager.common.kube_config_db import IngressKM
class IngressMonitor(KubeMonitor):
def __init__(self, args=None, logger=None, q=None):
super(IngressMonitor, self).__init__(args,
logger, q, IngressKM, resource_name='ingresses', beta=True)
self.init_monitor()
self.logger.info("IngressMonitor init done.");
def process_event(self, event):
event_type = event['type']
kind = event['object'].get('kind')
namespace = event['object']['metadata'].get('namespace')
name = event['object']['metadata'].get('name')
if not namespace or not name:
return
event_obj = event['object']
if self.db:
uuid = self.db.get_uuid(event_obj)
if event_type != 'DELETED':
# Update Ingress DB.
ingress_obj = self.db.locate(uuid)
ingress_obj.update(event_obj)
else:
# Remove the entry from Ingress DB.
self.db.delete(uuid)
print("%s - Got %s %s %s:%s"
%(self.name, event_type, kind, namespace, name))
self.logger.debug("%s - Got %s %s %s:%s"
%(self.name, event_type, kind, namespace, name))
self.q.put(event)
def event_callback(self):
while True:
self.process()
gevent.sleep(0)