| Scott Baker | 316c918 | 2015-05-05 10:18:17 -0700 | [diff] [blame^] | 1 | import os |
| 2 | import sys |
| Tony Mack | 79a49c8 | 2013-06-15 23:51:57 -0400 | [diff] [blame] | 3 | import threading |
| Tony Mack | b4cf100 | 2014-04-29 12:26:12 -0400 | [diff] [blame] | 4 | import time |
| Scott Baker | 286a78f | 2015-02-18 16:13:48 -0800 | [diff] [blame] | 5 | from observer.event_loop import XOSObserver |
| Sapan Bhatia | 757e0b6 | 2013-09-02 16:55:00 -0400 | [diff] [blame] | 6 | from observer.event_manager import EventListener |
| Tony Mack | b4cf100 | 2014-04-29 12:26:12 -0400 | [diff] [blame] | 7 | from util.logger import Logger, logging |
| Sapan Bhatia | 254198c | 2015-01-23 16:17:12 +0000 | [diff] [blame] | 8 | from model_policy import run_policy |
| Sapan Bhatia | e78215a | 2015-04-07 17:43:44 -0400 | [diff] [blame] | 9 | from xos.config import Config |
| Tony Mack | b4cf100 | 2014-04-29 12:26:12 -0400 | [diff] [blame] | 10 | |
| 11 | logger = Logger(level=logging.INFO) |
| Tony Mack | 79a49c8 | 2013-06-15 23:51:57 -0400 | [diff] [blame] | 12 | |
| 13 | class Backend: |
| Sapan Bhatia | e78215a | 2015-04-07 17:43:44 -0400 | [diff] [blame] | 14 | |
| Tony Mack | 79a49c8 | 2013-06-15 23:51:57 -0400 | [diff] [blame] | 15 | def run(self): |
| Sapan Bhatia | e78215a | 2015-04-07 17:43:44 -0400 | [diff] [blame] | 16 | # 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 Bhatia | 254198c | 2015-01-23 16:17:12 +0000 | [diff] [blame] | 24 | model_policy_thread = threading.Thread(target=run_policy) |
| 25 | model_policy_thread.start() |
| Sapan Bhatia | e78215a | 2015-04-07 17:43:44 -0400 | [diff] [blame] | 26 | else: |
| Scott Baker | 316c918 | 2015-05-05 10:18:17 -0700 | [diff] [blame^] | 27 | model_policy_thread = None |
| Sapan Bhatia | e78215a | 2015-04-07 17:43:44 -0400 | [diff] [blame] | 28 | print "Skipping model policies thread for service observer." |
| Sapan Bhatia | 254198c | 2015-01-23 16:17:12 +0000 | [diff] [blame] | 29 | |
| Tony Mack | 79a49c8 | 2013-06-15 23:51:57 -0400 | [diff] [blame] | 30 | |
| Sapan Bhatia | e78215a | 2015-04-07 17:43:44 -0400 | [diff] [blame] | 31 | # 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 Baker | 316c918 | 2015-05-05 10:18:17 -0700 | [diff] [blame^] | 35 | |
| 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 | |