From 76a1c6f2d0e47c71086fb9e338467fbbde7cca94 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Tue, 7 Mar 2006 19:46:26 +0000 Subject: Add new group diagram tool git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1796 ce84e21b-d406-0410-9b95-82705330c041 --- tools/groups-to-dot.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 tools/groups-to-dot.py (limited to 'tools') diff --git a/tools/groups-to-dot.py b/tools/groups-to-dot.py new file mode 100755 index 000000000..5145fa4ff --- /dev/null +++ b/tools/groups-to-dot.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +'''This script generates graphviz diagrams using bcfg2 metadata''' +__revision__ = '$Revision $' + +import lxml.etree, sys + +colors = ['aquamarine', 'chartreuse', 'gold', 'magenta', 'indianred1', 'limegreen', 'midnightblue', + 'lightblue', 'limegreen'] + +if __name__ == '__main__': + if len(sys.argv) < 2: + print "Usage groups-to-dot.py " + raise SystemExit, 1 + groups = lxml.etree.parse(sys.argv[1]).getroot() + categories = {'default':'grey83'} + for group in groups.findall('Group'): + if group.get('category', False): + if not categories.has_key(group.get('category')): + categories[group.get('category')] = colors.pop() + + print "digraph groups {" + for group in groups.findall('Group'): + color = categories[group.get('category', 'default')] + if group.get('profile', 'false') == 'true': + print '\tnode [style="filled,bold", fillcolor=%s];' % (color) + else: + print '\tnode [style="filled", fillcolor=%s];' % (color) + print '\t"%s";' % (group.get('name')) + + for group in groups.findall('Group'): + for parent in group.findall('Group'): + print '\t"%s" -> "%s" ;' % (group.get('name'), parent.get('name')) + print "}" + -- cgit v1.2.3-1-g7c22