From 1b2c7a3193fcfac8c1ce464cd5a80b95215661ac Mon Sep 17 00:00:00 2001 From: Bob Lantz <rlantz@cs.stanford.edu> Date: Tue, 15 Jul 2014 05:58:10 -0700 Subject: [PATCH] Clean up standard topologies to use build --- mininet/topo.py | 80 +++++++++++++++++----------------------------- mininet/topolib.py | 7 ++-- 2 files changed, 33 insertions(+), 54 deletions(-) diff --git a/mininet/topo.py b/mininet/topo.py index de5ba8a7..cc458fd8 100644 --- a/mininet/topo.py +++ b/mininet/topo.py @@ -201,76 +201,56 @@ def sorted( items ): "Items sorted in natural (i.e. alphabetical) order" return sorted(items, key=natural) -class SingleSwitchTopo(Topo): - '''Single switch connected to k hosts.''' - def __init__(self, k=2, **opts): - '''Init. - - @param k number of hosts - @param enable_all enables all nodes and switches? - ''' - super(SingleSwitchTopo, self).__init__(**opts) +class SingleSwitchTopo( Topo ): + "Single switch connected to k hosts." + def build( self, k=2, **opts ): + "k: number of hosts" self.k = k + switch = self.addSwitch( 's1' ) + for h in irange( 1, k ): + host = self.addHost( 'h%s' % h ) + self.addLink( host, switch ) - switch = self.addSwitch('s1') - for h in irange(1, k): - host = self.addHost('h%s' % h) - self.addLink(host, switch) - - -class SingleSwitchReversedTopo(Topo): - '''Single switch connected to k hosts, with reversed ports. - - The lowest-numbered host is connected to the highest-numbered port. - Useful to verify that Mininet properly handles custom port numberings. - ''' - def __init__(self, k=2, **opts): - '''Init. +class SingleSwitchReversedTopo( Topo ): + """Single switch connected to k hosts, with reversed ports. + The lowest-numbered host is connected to the highest-numbered port. + Useful to verify that Mininet properly handles custom port numberings.""" - @param k number of hosts - @param enable_all enables all nodes and switches? - ''' - super(SingleSwitchReversedTopo, self).__init__(**opts) + def build( self, k=2 ): + "k: number of hosts" self.k = k - switch = self.addSwitch('s1') - for h in irange(1, k): - host = self.addHost('h%s' % h) - self.addLink(host, switch, - port1=0, port2=(k - h + 1)) + switch = self.addSwitch( 's1' ) + for h in irange( 1, k ): + host = self.addHost( 'h%s' % h ) + self.addLink( host, switch, + port1=0, port2=( k - h + 1 ) ) -class LinearTopo(Topo): +class LinearTopo( Topo ): "Linear topology of k switches, with n hosts per switch." - def __init__(self, k=2, n=1, **opts): - """Init. - k: number of switches - n: number of hosts per switch - hconf: host configuration options - lconf: link configuration options""" - - super(LinearTopo, self).__init__(**opts) - + def build( self, k=2, n=1, **opts): + """k: number of switches + n: number of hosts per switch""" self.k = k self.n = n if n == 1: genHostName = lambda i, j: 'h%s' % i else: - genHostName = lambda i, j: 'h%ss%d' % (j, i) - + genHostName = lambda i, j: 'h%ss%d' % ( j, i ) lastSwitch = None - for i in irange(1, k): + for i in irange( 1, k ): # Add switch - switch = self.addSwitch('s%s' % i) + switch = self.addSwitch( 's%s' % i ) # Add hosts to switch - for j in irange(1, n): - host = self.addHost(genHostName(i, j)) - self.addLink(host, switch) + for j in irange( 1, n ): + host = self.addHost( genHostName( i, j ) ) + self.addLink( host, switch ) # Connect switch to previous if lastSwitch: - self.addLink(switch, lastSwitch) + self.addLink( switch, lastSwitch ) lastSwitch = switch diff --git a/mininet/topolib.py b/mininet/topolib.py index 4c15e913..c739cff1 100644 --- a/mininet/topolib.py +++ b/mininet/topolib.py @@ -6,8 +6,7 @@ class TreeTopo( Topo ): "Topology for a tree network with a given depth and fanout." - def __init__( self, depth=1, fanout=2 ): - super( TreeTopo, self ).__init__() + def build( self, depth=1, fanout=2 ): # Numbering: h1..N, s1..M self.hostNum = 1 self.switchNum = 1 @@ -42,8 +41,8 @@ class TorusTopo( Topo ): with the default controller or any Ethernet bridge without STP turned on! It can be used with STP, e.g.: # mn --topo torus,3,3 --switch lxbr,stp=1 --test pingall""" - def __init__( self, x, y, *args, **kwargs ): - Topo.__init__( self, *args, **kwargs ) + + def build( self, x, y ): if x < 3 or y < 3: raise Exception( 'Please use 3x3 or greater for compatibility ' 'with Mininet 2.1.0' ) -- GitLab