forked from nthomas-redhat/USM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
event-manager.py
62 lines (48 loc) · 1.59 KB
/
event-manager.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import argparse
import logging
import sys
import signal
import os
import django
import gevent.event
from gthulhu.log import log
import gthulhu.log
try:
import manhole
except ImportError:
manhole = None
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "usm.settings")
django.setup()
parser = argparse.ArgumentParser(description='Calamari management service')
parser.add_argument('--debug', dest='debug', action='store_true',
default=False, help='print log to stdout')
args = parser.parse_args()
if args.debug:
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter(gthulhu.log.FORMAT))
log.addHandler(handler)
# Instruct salt to use the gevent version of ZMQ
import zmq.green
import salt.utils.event
salt.utils.event.zmq = zmq.green
# Set up gevent compatibility in psycopg2
import psycogreen.gevent
psycogreen.gevent.patch_psycopg()
if manhole is not None:
# Enable manhole for debugging. Use oneshot mode
# for gevent compatibility
manhole.cry = lambda message: log.info("MANHOLE: %s" % message)
manhole.install(oneshot_on=signal.SIGUSR1)
from gthulhu.manager import Manager
m = Manager()
m.start()
print "Started Manager"
complete = gevent.event.Event()
def shutdown():
log.info("Signal handler: stopping")
complete.set()
gevent.signal(signal.SIGTERM, shutdown)
gevent.signal(signal.SIGINT, shutdown)
while not complete.is_set():
complete.wait(timeout=1)