argv0 = sys.argv[0]
def printEdge(tableName, type, baseType, label):
- if baseType.ref_table:
+ if baseType.ref_table_name:
if type.n_min == 0:
if type.n_max == 1:
arity = "?"
options['style'] = 'dotted'
print "\t%s -> %s [%s];" % (
tableName,
- baseType.ref_table,
+ baseType.ref_table_name,
', '.join(['%s=%s' % (k,v) for k,v in options.items()]))
-def schemaToDot(schemaFile):
+def schemaToDot(schemaFile, arrows):
schema = ovs.db.schema.DbSchema.from_json(ovs.json.from_file(schemaFile))
print "digraph %s {" % schema.name
+ print '\trankdir=LR;'
print '\tsize="6.5,4";'
print '\tmargin="0";'
print "\tnode [shape=box];"
- print "\tedge [dir=none, arrowhead=none, arrowtail=none];"
+ if not arrows:
+ print "\tedge [dir=none, arrowhead=none, arrowtail=none];"
for tableName, table in schema.tables.iteritems():
options = {}
if table.is_root:
where SCHEMA is an OVSDB schema in JSON format
The following options are also available:
+ --no-arrows omit arrows from diagram
-h, --help display this help message
-V, --version display version information\
""" % {'argv0': argv0}
try:
try:
options, args = getopt.gnu_getopt(sys.argv[1:], 'hV',
- ['help', 'version'])
+ ['no-arrows',
+ 'help', 'version',])
except getopt.GetoptError, geo:
sys.stderr.write("%s: %s\n" % (argv0, geo.msg))
sys.exit(1)
+ arrows = True
for key, value in options:
- if key in ['-h', '--help']:
+ if key == '--no-arrows':
+ arrows = False
+ elif key in ['-h', '--help']:
usage()
elif key in ['-V', '--version']:
print "ovsdb-dot (Open vSwitch) @VERSION@"
"(use --help for help)\n" % argv0)
sys.exit(1)
- schemaToDot(args[0])
+ schemaToDot(args[0], arrows)
except ovs.db.error.Error, e:
sys.stderr.write("%s: %s\n" % (argv0, e.msg))