summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/tools/test/topos/tower.py
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/tools/test/topos/tower.py')
-rwxr-xr-xframework/src/onos/tools/test/topos/tower.py55
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()