Skip to content

Commit

Permalink
ovsdb-dot: Include arrows by default.
Browse files Browse the repository at this point in the history
When ovsdb-dot generates diagrams for use in the manpages, the dot2pic
postprocessor makes nicer output if the arrowheads are omitted (dot2pic
adds the arrowheads itself).  But for other uses that don't go through
the postprocessor, we generally want the arrowheads.  So this commit adds
an option.  On the principle that the default should be the least
surprising to a naive user, arrowheads are included by default.

Signed-off-by: Ben Pfaff <[email protected]>
Signed-off-by: Justin Pettit <[email protected]>
Acked-by: Justin Pettit <[email protected]>
  • Loading branch information
blp authored and Justin Pettit committed Oct 17, 2013
1 parent 9463996 commit af4e1a4
Showing 2 changed files with 12 additions and 6 deletions.
16 changes: 11 additions & 5 deletions ovsdb/ovsdb-dot.in
Original file line number Diff line number Diff line change
@@ -37,15 +37,16 @@ def printEdge(tableName, type, baseType, label):
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:
@@ -69,6 +70,7 @@ usage: %(argv0)s [OPTIONS] SCHEMA
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}
@@ -78,13 +80,17 @@ if __name__ == "__main__":
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@"
@@ -96,7 +102,7 @@ if __name__ == "__main__":
"(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))
2 changes: 1 addition & 1 deletion vswitchd/automake.mk
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ pkgdata_DATA += vswitchd/vswitch.ovsschema
if HAVE_PYTHON
if HAVE_DOT
vswitchd/vswitch.gv: ovsdb/ovsdb-dot.in vswitchd/vswitch.ovsschema
$(OVSDB_DOT) $(srcdir)/vswitchd/vswitch.ovsschema > $@
$(OVSDB_DOT) --no-arrows $(srcdir)/vswitchd/vswitch.ovsschema > $@
vswitchd/vswitch.pic: vswitchd/vswitch.gv ovsdb/dot2pic
(dot -T plain < vswitchd/vswitch.gv | $(srcdir)/ovsdb/dot2pic -f 3) > $@;
VSWITCH_PIC = vswitchd/vswitch.pic

0 comments on commit af4e1a4

Please sign in to comment.