#!/usr/bin/env python

"""
      [1] ----- [3] ----- [5]
       |   ____/ | \       |
       |  /      |  \____  |
       | /       |       \ |
      [2] ----- [4] ----- [6]
"""
from mininet.topo import Topo

class RegionABC( Topo ):
    """Simple 6 switch example"""

    def __init__( self ):
        """Create a topology."""

        # Initialize Topology
        Topo.__init__( self )

        # add nodes, switches first...
        S1 = self.addSwitch( 's1' )
        S2 = self.addSwitch( 's2' )
        S3 = self.addSwitch( 's3' )
        S4 = self.addSwitch( 's4' )
        S5 = self.addSwitch( 's5' )
        S6 = self.addSwitch( 's6' )

        # ... and now hosts
        S1_host = self.addHost( 'h1' )
        S2_host = self.addHost( 'h2' )
        S3_host = self.addHost( 'h3' )
        S4_host = self.addHost( 'h4' )
        S5_host  = self.addHost( 'h5' )
        S6_host = self.addHost( 'h6' )

        # add edges between switch and corresponding host
        self.addLink( S1, S1_host )
        self.addLink( S2, S2_host )
        self.addLink( S3, S3_host )
        self.addLink( S4, S4_host )
        self.addLink( S5, S5_host )
        self.addLink( S6, S6_host )

        # add edges between switches as diagrammed above
        self.addLink( S1, S2, bw=10, delay='1.0ms')
        self.addLink( S1, S3, bw=10, delay='1.0ms')
        self.addLink( S2, S3, bw=10, delay='1.0ms')
        self.addLink( S2, S4, bw=10, delay='1.0ms')
        self.addLink( S3, S4, bw=10, delay='1.0ms')
        self.addLink( S3, S5, bw=10, delay='1.0ms')
        self.addLink( S3, S6, bw=10, delay='1.0ms')
        self.addLink( S4, S6, bw=10, delay='1.0ms')
        self.addLink( S5, S6, bw=10, delay='1.0ms')

topos = { 'regionabc': ( lambda: RegionABC() ) }

if __name__ == '__main__':
    from onosnet import run
    run( RegionABC() )
