blob: c43941c4a5b73776337ea777f272695d181a4a63 [file] [log] [blame]
#!/usr/bin/env python
"""
Copyright 2015 Open Networking Foundation ( ONF )
Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
TestON is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
( at your option ) any later version.
TestON is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with TestON. If not, see <http://www.gnu.org/licenses/>.
"""
from mininet.topo import Topo
class ObeliskTopo( Topo ):
def __init__( self ):
Topo.__init__( self )
topSwitch = self.addSwitch( 's1', dpid='1000'.zfill( 16 ) )
leftTopSwitch = self.addSwitch( 's2', dpid='2000'.zfill( 16 ) )
rightTopSwitch = self.addSwitch( 's5', dpid='5000'.zfill( 16 ) )
leftBotSwitch = self.addSwitch( 's3', dpid='3000'.zfill( 16 ) )
rightBotSwitch = self.addSwitch( 's6', dpid='6000'.zfill( 16 ) )
midBotSwitch = self.addSwitch( 's28', dpid='2800'.zfill( 16 ) )
topHost = self.addHost( 'h1' )
leftTopHost = self.addHost( 'h2' )
rightTopHost = self.addHost( 'h5' )
leftBotHost = self.addHost( 'h3' )
rightBotHost = self.addHost( 'h6' )
midBotHost = self.addHost( 'h28' )
self.addLink( topSwitch, topHost )
self.addLink( leftTopSwitch, leftTopHost )
self.addLink( rightTopSwitch, rightTopHost )
self.addLink( leftBotSwitch, leftBotHost )
self.addLink( rightBotSwitch, rightBotHost )
self.addLink( midBotSwitch, midBotHost )
self.addLink( leftTopSwitch, rightTopSwitch )
self.addLink( topSwitch, leftTopSwitch )
self.addLink( topSwitch, rightTopSwitch )
self.addLink( leftTopSwitch, leftBotSwitch )
self.addLink( rightTopSwitch, rightBotSwitch )
self.addLink( leftBotSwitch, midBotSwitch )
self.addLink( midBotSwitch, rightBotSwitch )
agg1Switch = self.addSwitch( 's4', dpid='3004'.zfill( 16 ) )
agg2Switch = self.addSwitch( 's7', dpid='6007'.zfill( 16 ) )
agg1Host = self.addHost( 'h4' )
agg2Host = self.addHost( 'h7' )
self.addLink( agg1Switch, agg1Host )
self.addLink( agg2Switch, agg2Host )
self.addLink( agg1Switch, leftBotSwitch )
self.addLink( agg2Switch, rightBotSwitch )
for i in range( 10 ):
num = str( i + 8 )
switch = self.addSwitch( 's' + num, dpid=( '30' + num.zfill( 2 ) ).zfill( 16 ) )
host = self.addHost( 'h' + num )
self.addLink( switch, host )
self.addLink( switch, agg1Switch )
for i in range( 10 ):
num = str( i + 18 )
switch = self.addSwitch( 's' + num, dpid=( '60' + num.zfill( 2 ) ).zfill( 16 ) )
host = self.addHost( 'h' + num )
self.addLink( switch, host )
self.addLink( switch, agg2Switch )
topos = { 'obelisk': ( lambda: ObeliskTopo() ) }
def run():
topo = ObeliskTopo()
net = Mininet( topo=topo, controller=RemoteController, autoSetMacs=True )
net.start()
CLI( net )
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
run()