Add build() method to simplify Topo() usage

This commit is contained in:
Bob Lantz
2014-07-09 21:37:47 -07:00
parent 00803bcd7f
commit 1324ae6262
+13 -6
View File
@@ -48,18 +48,25 @@ class MultiGraph( object ):
class Topo(object): class Topo(object):
"Data center network representation for structured multi-trees." "Data center network representation for structured multi-trees."
def __init__(self, hopts=None, sopts=None, lopts=None): def __init__(self, *args, **params):
"""Topo object: """Topo object.
Optional named parameters:
hinfo: default host options hinfo: default host options
sopts: default switch options sopts: default switch options
lopts: default link options""" lopts: default link options
calls build()"""
self.g = MultiGraph() self.g = MultiGraph()
self.node_info = {} self.node_info = {}
self.link_info = {} # (src, dst) tuples hash to EdgeInfo objects self.link_info = {} # (src, dst) tuples hash to EdgeInfo objects
self.hopts = {} if hopts is None else hopts self.hopts = params.pop( 'hopts', {} )
self.sopts = {} if sopts is None else sopts self.sopts = params.pop( 'sopts', {} )
self.lopts = {} if lopts is None else lopts self.lopts = params.pop( 'lopts', {} )
self.ports = {} # ports[src][dst] is port on src that connects to dst self.ports = {} # ports[src][dst] is port on src that connects to dst
self.build( *args, **params )
def build( self, *args, **params ):
"Override this method to build your topology."
pass
def addNode(self, name, **opts): def addNode(self, name, **opts):
"""Add Node to graph. """Add Node to graph.