diff options
Diffstat (limited to 'framework/src/onos/tools/test/topos/tower.py')
-rwxr-xr-x | framework/src/onos/tools/test/topos/tower.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/framework/src/onos/tools/test/topos/tower.py b/framework/src/onos/tools/test/topos/tower.py new file mode 100755 index 00000000..b75bfe40 --- /dev/null +++ b/framework/src/onos/tools/test/topos/tower.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + +from mininet.topo import Topo +from mininet.cli import CLI +from mininet.net import Mininet +from mininet.node import RemoteController, OVSKernelSwitch +from mininet.log import setLogLevel + + +class TowerTopo( Topo ): + """Create a tower topology""" + + def build( self, k=4, h=6 ): + spines = [] + leaves = [] + hosts = [] + + # Create the two spine switches + spines.append(self.addSwitch('s1')) + spines.append(self.addSwitch('s2')) + + # Create two links between the spine switches + self.addLink(spines[0], spines[1]) + #TODO add second link between spines when multi-link topos are supported + #self.addLink(spines[0], spines[1]) + + # Now create the leaf switches, their hosts and connect them together + i = 1 + c = 0 + while i <= k: + leaves.append(self.addSwitch('s1%d' % i)) + for spine in spines: + self.addLink(leaves[i-1], spine) + + j = 1 + while j <= h: + hosts.append(self.addHost('h%d%d' % (i, j))) + self.addLink(hosts[c], leaves[i-1]) + j+=1 + c+=1 + + i+=1 + +topos = { 'tower': TowerTopo } + +def run(): + topo = TowerTopo() + net = Mininet( topo=topo, controller=RemoteController, autoSetMacs=True ) + net.start() + CLI( net ) + net.stop() + +if __name__ == '__main__': + setLogLevel( 'info' ) + run() |