diff options
Diffstat (limited to 'lib.py')
-rw-r--r-- | lib.py | 226 |
1 files changed, 10 insertions, 216 deletions
@@ -4,7 +4,7 @@ # Author: Jan Pokorný <jpokorny at redhat dot com> # Distributed under GPLv2+; generated content under CC-BY-SA 3.0 # (to view a copy, visit http://creativecommons.org/licenses/by-sa/3.0/) -"""Elements library incl. visual aspects""" +"""Custom wrapping of pydot""" from sys import path from os.path import expanduser, extsep @@ -47,6 +47,7 @@ class LibMeta(type): __all__.append(name) super(LibMeta, cls).__init__(name, bases, attrs) old_init = cls.__init__ + def new_init(self, *args, **kwargs): subgraphs = kwargs.pop('_subgraphs', ()) nodes = kwargs.pop('_nodes', ()) @@ -74,6 +75,7 @@ class LibMeta(type): class LibDot(Dot): __metaclass__ = LibMeta + def __init__(self, *args, **kwargs): kwargs.setdefault('graph_type', 'digraph') super(LibDot, self).__init__(*args, **kwargs) @@ -82,48 +84,20 @@ class LibDot(Dot): class LibSubgraph(Subgraph): __metaclass__ = LibMeta + def __init__(self, *args, **kwargs): super(LibSubgraph, self).__init__(*args, **kwargs) #self.set_suppress_disconnected(True) -class LibNode(Node): - __metaclass__ = LibMeta - - -class LibEdge(Edge): - __metaclass__ = LibMeta - - -# -# Subgraph inheritance -# - - -class SubgraphImportant(LibSubgraph): - def __init__(self, *args, **kwargs): - kwargs.setdefault('fillcolor', '#eaeaea') - kwargs.setdefault('style', 'bold, filled, rounded') - super(SubgraphImportant, self).__init__(*args, **kwargs) - - -class SubgraphStandard(LibSubgraph): - def __init__(self, *args, **kwargs): - kwargs.setdefault('fillcolor', '#f5f5f5') - kwargs.setdefault('style', 'filled, rounded') - super(SubgraphStandard, self).__init__(*args, **kwargs) - - class SubgraphInvisible(LibSubgraph): def __init__(self, *args, **kwargs): kwargs.setdefault('style', 'invis') super(SubgraphInvisible, self).__init__(*args, **kwargs) - -# -# Node inheritance -# +class LibNode(Node): + __metaclass__ = LibMeta class NodeInvisible(LibNode): @@ -132,68 +106,10 @@ class NodeInvisible(LibNode): super(LibNode, self).__init__(*args, **kwargs) -class Program(LibNode): - def __init__(self, *args, **kwargs): - kwargs.setdefault('shape', 'box') - kwargs.setdefault('style', 'filled') - super(Program, self).__init__(*args, **kwargs) - - -class Agent(Program): - def __init__(self, *args, **kwargs): - kwargs.setdefault('fillcolor', 'lavenderblush') - kwargs.setdefault('style', 'filled') - super(Agent, self).__init__(*args, **kwargs) - - -class Library(Program): - def __init__(self, *args, **kwargs): - kwargs.setdefault('fillcolor', 'lavenderblush') - kwargs.setdefault('style', 'filled') - super(Library, self).__init__(*args, **kwargs) - - -class Executable(Program): - pass - - -class Daemon(Executable): - def __init__(self, *args, **kwargs): - kwargs.setdefault('fillcolor', 'cornsilk') - kwargs.setdefault('style', 'filled') - super(Daemon, self).__init__(*args, **kwargs) - - -class Artefact(LibNode): - def __init__(self, *args, **kwargs): - kwargs.setdefault('shape', 'box3d') - kwargs.setdefault('fillcolor', 'wheat') - kwargs.setdefault('style', 'filled') - super(Artefact, self).__init__(*args, **kwargs) - - -class Device(LibNode): - def __init__(self, *args, **kwargs): - kwargs.setdefault('shape', 'box3d') - kwargs.setdefault('fillcolor', 'wheat') - kwargs.setdefault('style', 'filled') - super(Device, self).__init__(*args, **kwargs) - - -class StorageDevice(Device): - def __init__(self, *args, **kwargs): - super(StorageDevice, self).__init__(*args, **kwargs) - - -class FenceDevice(Device): - def __init__(self, *args, **kwargs): - super(FenceDevice, self).__init__(*args, **kwargs) +class LibEdge(Edge): + __metaclass__ = LibMeta -# -# Edge inheritance -# - class EdgeInvisible(LibEdge): def __init__(self, *args, **kwargs): kwargs.setdefault('style', 'invis') @@ -201,129 +117,6 @@ class EdgeInvisible(LibEdge): super(EdgeInvisible, self).__init__(*args, **kwargs) -class DBUS(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('style', 'dotted') - super(DBUS, self).__init__(*args, **kwargs) - - -class OddjobExec(DBUS): - def __init__(self, *args, **kwargs): - kwargs.setdefault('label', 'oddjob\nexec') - super(OddjobExec, self).__init__(*args, **kwargs) - - -class HTTPS(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('style', 'bold') - super(HTTPS, self).__init__(*args, **kwargs) - - -class LuciHTTPS(HTTPS): - def __init__(self, *args, **kwargs): - kwargs.setdefault('label', 'port 8084') - super(LuciHTTPS, self).__init__(*args, **kwargs) - - -class ApplicationSpecificProtocol(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('style', 'dashed') - super(ApplicationSpecificProtocol, self).__init__(*args, **kwargs) - - -class RICCIRPC(ApplicationSpecificProtocol): - def __init__(self, *args, **kwargs): - kwargs.setdefault('label', 'port 11111') - super(RICCIRPC, self).__init__(*args, **kwargs) - - -class SNMP(ApplicationSpecificProtocol): - def __init__(self, *args, **kwargs): - kwargs.setdefault('label', 'port 161') - super(SNMP, self).__init__(*args, **kwargs) - - -class CIM(ApplicationSpecificProtocol): - def __init__(self, *args, **kwargs): - kwargs.setdefault('label', 'port 898[89]') - super(CIM, self).__init__(*args, **kwargs) - - -class Consume(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('color', 'darkgreen') - kwargs.setdefault('fontcolor', 'darkgreen') - super(Consume, self).__init__(*args, **kwargs) - - -class ConsumeReversed(Consume): - def __init__(self, *args, **kwargs): - kwargs.setdefault('dir', 'back') - super(ConsumeReversed, self).__init__(*reversed(args), **kwargs) - - -class Produce(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('color', 'orangered') - kwargs.setdefault('fontcolor', 'orangered') - super(Produce, self).__init__(*args, **kwargs) - - -class Delegate(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('color', 'navy') - kwargs.setdefault('fontcolor', 'navy') - #kwargs.setdefault('dir', 'both') - super(Delegate, self).__init__(*args, **kwargs) - - -class FencedBy(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('color', 'red') - kwargs.setdefault('dir', 'back') - super(FencedBy, self).__init__(*args, **kwargs) - - -# peer-to-peer (1:1 hence constraint='false') -class Exchange(LibEdge): - def __init__(self, *args, **kwargs): - kwargs.setdefault('color', 'saddlebrown') - kwargs.setdefault('fontcolor', 'saddlebrown') - kwargs.setdefault('dir', 'both') - kwargs.setdefault('constraint', 'false') - super(Exchange, self).__init__(*args, **kwargs) - - -# data bus -class Databus(Exchange): - def __init__(self, *args, **kwargs): - kwargs.setdefault('color', 'saddlebrown') - kwargs.setdefault('fontcolor', 'saddlebrown') - super(Databus, self).__init__(*args, **kwargs) - - -# mixing - -class DelegateOddjobExec(Delegate, OddjobExec): - pass - - -class DelegateRICCIRPC(Delegate, RICCIRPC): - pass - - -class DelegateLuciHTTPS(Delegate, LuciHTTPS): - pass - - -class DelegateSNMP(Delegate, SNMP): - pass - - -class DelegateCIM(Delegate, CIM): - pass - - # # main-helpers # @@ -489,4 +282,5 @@ def main(graph, argv, *args, **kws): ext = argv[1] if len(argv) > 1 else 'pdf' fmt = {'dot': 'raw'}.get(ext, ext) output += extsep + ext - gen_graph(graph, **kws).write(output, format=fmt, prog=['dot'].extend(args)) + gen_graph(graph, **kws).write(output, format=fmt, + prog=['dot'].extend(args)) |