Wide range of debugging changes
diff --git a/planetstack/observer/event_loop.py b/planetstack/observer/event_loop.py
index 6803398..671bdc3 100644
--- a/planetstack/observer/event_loop.py
+++ b/planetstack/observer/event_loop.py
@@ -12,6 +12,7 @@
from util.logger import Logger, logging, logger
#from timeout import timeout
from planetstack.config import Config
+from observer.steps import *
debug_mode = False
@@ -42,6 +43,7 @@
order = []
marked = []
+
while sources:
n = sources.pop()
try:
@@ -51,19 +53,16 @@
marked.append(m)
except KeyError:
pass
- if (n in steps):
- order.append(n)
-
+ order.append(n)
return order
class PlanetStackObserver:
- sync_steps = ['SyncNetworks','SyncNetworkSlivers','SyncSites','SyncSitePrivileges','SyncSlices','SyncSliceMemberships','SyncSlivers','SyncSliverIps']
+ sync_steps = [SyncNetworks,SyncNetworkSlivers,SyncSites,SyncSitePrivileges,SyncSlices,SyncSliceMemberships,SyncSlivers,SyncSliverIps]
def __init__(self):
# The Condition object that gets signalled by Feefie events
self.load_sync_steps()
self.event_cond = threading.Condition()
- self.load_enacted()
def wait_for_event(self, timeout):
self.event_cond.acquire()
@@ -77,42 +76,52 @@
self.event_cond.release()
def load_sync_steps(self):
- dep_path = Config().pl_dependency_path
+ dep_path = Config().observer_dependency_path
try:
# This contains dependencies between records, not sync steps
self.model_dependency_graph = json.loads(open(dep_path).read())
except Exception,e:
raise e
- backend_path = Config().backend_dependency_path
+ backend_path = Config().observer_backend_dependency_path
try:
# This contains dependencies between backend records
self.backend_dependency_graph = json.loads(open(backend_path).read())
except Exception,e:
- raise e
+ # We can work without a backend graph
+ self.backend_dependency_graph = {}
provides_dict = {}
- for s in sync_steps:
+ for s in self.sync_steps:
for m in s.provides:
- provides_dict[m]=s.__name__
+ try:
+ provides_dict[m.__name__].append(s.__name__)
+ except KeyError:
+ provides_dict[m.__name__]=[s.__name__]
+
step_graph = {}
- for k,v in model_dependency_graph.iteritems():
+ for k,v in self.model_dependency_graph.iteritems():
try:
- source = provides_dict[k]
- for m in v:
- try:
- dest = provides_dict[m]
- except KeyError:
- pass
- # no deps, pass
- step_graph[source]=dest
+ for source in provides_dict[k]:
+ for m in v:
+ try:
+ for dest in provides_dict[m]:
+ # no deps, pass
+ try:
+ step_graph[source].append(dest)
+ except:
+ step_graph[source]=[dest]
+ except KeyError:
+ pass
except KeyError:
pass
# no dependencies, pass
- if (backend_dependency_graph):
+ import pdb
+ pdb.set_trace()
+ if (self.backend_dependency_graph):
backend_dict = {}
for s in sync_steps:
for m in s.serves:
@@ -135,7 +144,8 @@
dependency_graph = step_graph
- self.ordered_steps = toposort(dependency_graph, steps)
+ self.ordered_steps = toposort(dependency_graph, self.sync_steps)
+ print "Order of steps=",self.ordered_steps
self.load_run_times()