On 12/19/24 11:53, Frode Nordahl wrote: > The graphviz library has a large set of dependencies, and as such > it may be desireable to not install it by default. > > Before this patch execution of ovs-flowviz would end in > ImportError when graphviz is unavailable. > > Exit with a friendly message instead, allowing the user to consume > the parts of the program that do not depend on graphviz. > > Signed-off-by: Frode Nordahl <[email protected]> > --- > python/ovs/flowviz/odp/graph.py | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/python/ovs/flowviz/odp/graph.py b/python/ovs/flowviz/odp/graph.py > index 4d1fb7493..5ab14e227 100644 > --- a/python/ovs/flowviz/odp/graph.py > +++ b/python/ovs/flowviz/odp/graph.py > @@ -14,16 +14,27 @@ > > """ Defines a Datapath Graph using graphviz. """ > import colorsys > -import graphviz > +import os > import random > +import sys > > from ovs.flowviz.odp.html import HTMLTree, HTMLFormatter > from ovs.flowviz.odp.tree import FlowTree > from ovs.flowviz.process import FileProcessor > > +try: > + import graphviz > +except ImportError: > + graphviz = None > + > > class GraphProcessor(FileProcessor): > def __init__(self, opts): > + if graphviz is None: > + print("ERROR: The graph sub-command depends on the graphviz " > + "Python library, which does not appear to be installed.", > + file=sys.stderr) > + sys.exit(os.EX_UNAVAILABLE)
Most of these exit codes are not available on Windows, so should not be used in a portable code. exit(1) might be good enough. > super().__init__(opts, "odp") > > def start_file(self, name, filename): _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
