import objgraph import inspect import sys import os possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) sys.path.insert(0, possible_topdir) from devstack import settings from devstack.progs import common distro = settings.RHEL6 comps = common.get_default_components() def filter_c(c): if not inspect.isclass(c): return False if c is object: return False return True actions = settings.ACTIONS for action in actions: klss = list() for c in comps.keys(): kls = common.get_action_cls(action, c, distro) klss.append(kls) max_depth = 5 fn = "%s.png" % (action) objgraph.show_refs(klss, filename=fn, max_depth=max_depth, highlight=inspect.isclass, filter=filter_c, extra_ignore=[id(locals())])