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 | |
Scott Baker | 316c918 | 2015-05-05 10:18:17 -0700 | [diff] [blame] | 36 | while True: |
| 37 | try: |
| 38 | time.sleep(1000) |
| 39 | except KeyboardInterrupt: |
| 40 | print "exiting due to keyboard interrupt" |
| 41 | # TODO: See about setting the threads as daemons |
| 42 | observer_thread._Thread__stop() |
| 43 | if model_policy_thread: |
Scott Baker | 7561186 | 2015-05-07 15:54:47 -0700 | [diff] [blame] | 44 | model_policy_thread._Thread__stop() |
Scott Baker | 316c918 | 2015-05-05 10:18:17 -0700 | [diff] [blame] | 45 | sys.exit(1) |
| 46 | |