summaryrefslogtreecommitdiffstats
path: root/lib.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib.py')
-rw-r--r--lib.py226
1 files changed, 10 insertions, 216 deletions
diff --git a/lib.py b/lib.py
index f5b6f8d..fd39ce2 100644
--- a/lib.py
+++ b/lib.py
@@ -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))