5 from planetstack.config import Config
13 from core.models import *
15 from util.logger import Logger, logging
16 logger = Logger(level=logging.INFO)
\r
21 dep_data = open(Config().dependency_graph).read()
23 dep_data = open('/opt/planetstack/model-deps').read()
25 dependencies = json.loads(dep_data)
28 for k, lst in dependencies.items():
31 inv_dependencies[v].append(k)
33 inv_dependencies[v]=[k]
37 if (name.endswith('s')):
43 def walk_deps(fn, object):
44 model = object.__class__.__name__
46 deps = dependencies[model]
49 __walk_deps(fn, object, deps)
51 def walk_inv_deps(fn, object):
52 model = object.__class__.__name__
54 deps = inv_dependencies[model]
57 __walk_deps(fn, object, deps)
59 def __walk_deps(fn, object, deps):
60 model = object.__class__.__name__
62 #print "Checking dep %s"%dep
66 peer = getattr(object, link)
67 except AttributeError:
70 peer = getattr(object, link)
71 except AttributeError:
72 if not missing_links.has_key(model+'.'+link):
73 print "Model %s missing link for dependency %s"%(model, link)
74 logger.log_exc("Model %s missing link for dependency %s"%(model, link))
75 missing_links[model+'.'+link]=True
79 peer_objects = peer.all()
80 except AttributeError:
85 for o in peer_objects:
87 # Uncomment the following line to enable recursion
88 # walk_inv_deps(fn, o)
91 print x,x.__class__.__name__
98 s = Site.objects.filter(login_base='onlab')
100 walk_inv_deps(p,s[0])
102 if __name__=='__main__':