blob: 23ec35202d5b6901b9db02bf62422ea052f86e23 [file] [log] [blame]
Scott Baker316c9182015-05-05 10:18:17 -07001import os
2import sys
Tony Mack79a49c82013-06-15 23:51:57 -04003import threading
Tony Mackb4cf1002014-04-29 12:26:12 -04004import time
Scott Baker286a78f2015-02-18 16:13:48 -08005from observer.event_loop import XOSObserver
Sapan Bhatia757e0b62013-09-02 16:55:00 -04006from observer.event_manager import EventListener
Tony Mackb4cf1002014-04-29 12:26:12 -04007from util.logger import Logger, logging
Sapan Bhatia254198c2015-01-23 16:17:12 +00008from model_policy import run_policy
Sapan Bhatiae78215a2015-04-07 17:43:44 -04009from xos.config import Config
Tony Mackb4cf1002014-04-29 12:26:12 -040010
11logger = Logger(level=logging.INFO)
Tony Mack79a49c82013-06-15 23:51:57 -040012
13class Backend:
Sapan Bhatiae78215a2015-04-07 17:43:44 -040014
Tony Mack79a49c82013-06-15 23:51:57 -040015 def run(self):
Sapan Bhatiae78215a2015-04-07 17:43:44 -040016 # start the openstack observer
17 observer = XOSObserver()
18 observer_thread = threading.Thread(target=observer.run)
19 observer_thread.start()
20
21 # start model policies thread
22 observer_name = getattr(Config(), "observer_name", "")
23 if (not observer_name):
Sapan Bhatia254198c2015-01-23 16:17:12 +000024 model_policy_thread = threading.Thread(target=run_policy)
25 model_policy_thread.start()
Sapan Bhatiae78215a2015-04-07 17:43:44 -040026 else:
Scott Baker316c9182015-05-05 10:18:17 -070027 model_policy_thread = None
Sapan Bhatiae78215a2015-04-07 17:43:44 -040028 print "Skipping model policies thread for service observer."
Sapan Bhatia254198c2015-01-23 16:17:12 +000029
Tony Mack79a49c82013-06-15 23:51:57 -040030
Sapan Bhatiae78215a2015-04-07 17:43:44 -040031 # start event listene
32 #event_manager = EventListener(wake_up=observer.wake_up)
33 #event_manager_thread = threading.Thread(target=event_manager.run)
34 #event_manager_thread.start()
Scott Baker316c9182015-05-05 10:18:17 -070035
36 print "entering keyboard wait loop"
37 while True:
38 try:
39 time.sleep(1000)
40 except KeyboardInterrupt:
41 print "exiting due to keyboard interrupt"
42 # TODO: See about setting the threads as daemons
43 observer_thread._Thread__stop()
44 if model_policy_thread:
45 model_policy_thread._Threat__stop()
46 sys.exit(1)
47