CORD-880 new base class for synchronizers

Change-Id: Ia7b459f10a00c4ba92d363c8c4da9d7ab8839ff1
diff --git a/xos/synchronizers/new_base/backend_modelpolicy.py b/xos/synchronizers/new_base/backend_modelpolicy.py
new file mode 100644
index 0000000..9aeb731
--- /dev/null
+++ b/xos/synchronizers/new_base/backend_modelpolicy.py
@@ -0,0 +1,39 @@
+import os
+import inspect
+import imp
+import sys
+import threading
+import time
+from syncstep import SyncStep
+from synchronizers.new_base.event_loop import XOSObserver
+from xos.logger import Logger, logging
+from xos.config import Config
+
+watchers_enabled = getattr(Config(), "observer_enable_watchers", None)
+
+if (watchers_enabled):
+    from synchronizers.new_base.watchers import XOSWatcher
+
+logger = Logger(level=logging.INFO)
+
+class Backend:
+    def run(self):
+        # start model policies thread
+        policies_dir = getattr(Config(), "observer_model_policies_dir", None)
+        if policies_dir:
+            from synchronizers.model_policy import run_policy
+            model_policy_thread = threading.Thread(target=run_policy)
+            model_policy_thread.start()
+        else:
+            model_policy_thread = None
+            logger.info("Skipping model policies thread due to no model_policies dir.")
+
+        while True:
+            try:
+                time.sleep(1000)
+            except KeyboardInterrupt:
+                print "exiting due to keyboard interrupt"
+                if model_policy_thread:
+                    model_policy_thread._Thread__stop()
+                sys.exit(1)
+