#!/usr/bin/env python

"""
"""
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.node import Node
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.cli import CLI
from mininet.log import setLogLevel
from mininet.util import dumpNodeConnections

class AttMplsTopo( Topo ):
    "Internet Topology Zoo Specimen."

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

        # Initialize Topology
        Topo.__init__( self )

        # add nodes, switches first...
        NY54 = self.addSwitch( 's25' ) # 40.728270, -73.994483
        CMBR = self.addSwitch( 's1' )  # 42.373730, -71.109734
        CHCG = self.addSwitch( 's2' )  # 41.877461, -87.642892
        CLEV = self.addSwitch( 's3' )  # 41.498928, -81.695217
        RLGH = self.addSwitch( 's4' )  # 35.780150, -78.644026
        ATLN = self.addSwitch( 's5' )  # 33.749017, -84.394168
        PHLA = self.addSwitch( 's6' )  # 39.952906, -75.172278
        WASH = self.addSwitch( 's7' )  # 38.906696, -77.035509
        NSVL = self.addSwitch( 's8' )  # 36.166410, -86.787305
        STLS = self.addSwitch( 's9' )  # 38.626418, -90.198143
        NWOR = self.addSwitch( 's10' ) # 29.951475, -90.078434
        HSTN = self.addSwitch( 's11' ) # 29.763249, -95.368332
        SNAN = self.addSwitch( 's12' ) # 29.424331, -98.491745
        DLLS = self.addSwitch( 's13' ) # 32.777665, -96.802064
        ORLD = self.addSwitch( 's14' ) # 28.538641, -81.381110
        DNVR = self.addSwitch( 's15' ) # 39.736623, -104.984887
        KSCY = self.addSwitch( 's16' ) # 39.100725, -94.581228
        SNFN = self.addSwitch( 's17' ) # 37.779751, -122.409791
        SCRM = self.addSwitch( 's18' ) # 38.581001, -121.497844
        PTLD = self.addSwitch( 's19' ) # 45.523317, -122.677768
        STTL = self.addSwitch( 's20' ) # 47.607326, -122.331786
        SLKC = self.addSwitch( 's21' ) # 40.759577, -111.895079
        LA03 = self.addSwitch( 's22' ) # 34.056346, -118.235951
        SNDG = self.addSwitch( 's23' ) # 32.714564, -117.153528
        PHNX = self.addSwitch( 's24' ) # 33.448289, -112.076299

        # ... and now hosts
        NY54_host = self.addHost( 'h25' )
        CMBR_host = self.addHost( 'h1' )
        CHCG_host = self.addHost( 'h2' )
        CLEV_host = self.addHost( 'h3' )
        RLGH_host = self.addHost( 'h4' )
        ATLN_host = self.addHost( 'h5' )
        PHLA_host = self.addHost( 'h6' )
        WASH_host = self.addHost( 'h7' )
        NSVL_host = self.addHost( 'h8' )
        STLS_host = self.addHost( 'h9' )
        NWOR_host = self.addHost( 'h10' )
        HSTN_host = self.addHost( 'h11' )
        SNAN_host = self.addHost( 'h12' )
        DLLS_host = self.addHost( 'h13' )
        ORLD_host = self.addHost( 'h14' )
        DNVR_host = self.addHost( 'h15' )
        KSCY_host = self.addHost( 'h16' )
        SNFN_host = self.addHost( 'h17' )
        SCRM_host = self.addHost( 'h18' )
        PTLD_host = self.addHost( 'h19' )
        STTL_host = self.addHost( 'h20' )
        SLKC_host = self.addHost( 'h21' )
        LA03_host = self.addHost( 'h22' )
        SNDG_host = self.addHost( 'h23' )
        PHNX_host = self.addHost( 'h24' )

        # add edges between switch and corresponding host
        self.addLink( NY54 , NY54_host )
        self.addLink( CMBR , CMBR_host )
        self.addLink( CHCG , CHCG_host )
        self.addLink( CLEV , CLEV_host )
        self.addLink( RLGH , RLGH_host )
        self.addLink( ATLN , ATLN_host )
        self.addLink( PHLA , PHLA_host )
        self.addLink( WASH , WASH_host )
        self.addLink( NSVL , NSVL_host )
        self.addLink( STLS , STLS_host )
        self.addLink( NWOR , NWOR_host )
        self.addLink( HSTN , HSTN_host )
        self.addLink( SNAN , SNAN_host )
        self.addLink( DLLS , DLLS_host )
        self.addLink( ORLD , ORLD_host )
        self.addLink( DNVR , DNVR_host )
        self.addLink( KSCY , KSCY_host )
        self.addLink( SNFN , SNFN_host )
        self.addLink( SCRM , SCRM_host )
        self.addLink( PTLD , PTLD_host )
        self.addLink( STTL , STTL_host )
        self.addLink( SLKC , SLKC_host )
        self.addLink( LA03 , LA03_host )
        self.addLink( SNDG , SNDG_host )
        self.addLink( PHNX , PHNX_host )

        # add edges between switches
        self.addLink( NY54 , CMBR )
        self.addLink( NY54 , CHCG )
        self.addLink( NY54 , PHLA )
        self.addLink( NY54 , WASH )
        self.addLink( CMBR , PHLA )
        self.addLink( CHCG , CLEV )
        self.addLink( CHCG , PHLA )
        self.addLink( CHCG , STLS )
        self.addLink( CHCG , DNVR )
        self.addLink( CHCG , KSCY )
        self.addLink( CHCG , SNFN )
        self.addLink( CHCG , STTL )
        self.addLink( CHCG , SLKC )
        self.addLink( CLEV , NSVL )
        self.addLink( CLEV , STLS )
        self.addLink( CLEV , PHLA )
        self.addLink( RLGH , ATLN )
        self.addLink( RLGH , WASH )
        self.addLink( ATLN , WASH )
        self.addLink( ATLN , NSVL )
        self.addLink( ATLN , STLS )
        self.addLink( ATLN , DLLS )
        self.addLink( ATLN , ORLD )
        self.addLink( PHLA , WASH )
        self.addLink( NSVL , STLS )
        self.addLink( NSVL , DLLS )
        self.addLink( STLS , DLLS )
        self.addLink( STLS , KSCY )
        self.addLink( STLS , LA03 )
        self.addLink( NWOR , HSTN )
        self.addLink( NWOR , DLLS )
        self.addLink( NWOR , ORLD )
        self.addLink( HSTN , SNAN )
        self.addLink( HSTN , DLLS )
        self.addLink( HSTN , ORLD )
        self.addLink( SNAN , PHNX )
        self.addLink( SNAN , DLLS )
        self.addLink( DLLS , DNVR )
        self.addLink( DLLS , KSCY )
        self.addLink( DLLS , SNFN )
        self.addLink( DLLS , LA03 )
        self.addLink( DNVR , KSCY )
        self.addLink( DNVR , SNFN )
        self.addLink( DNVR , SLKC )
        self.addLink( KSCY , SNFN )
        self.addLink( SNFN , SCRM )
        self.addLink( SNFN , PTLD )
        self.addLink( SNFN , STTL )
        self.addLink( SNFN , SLKC )
        self.addLink( SNFN , LA03 )
        self.addLink( SCRM , SLKC )
        self.addLink( PTLD , STTL )
        self.addLink( SLKC , LA03 )
        self.addLink( LA03 , SNDG )
        self.addLink( LA03 , PHNX )
        # self.addLink( LA03 , PHNX )
        self.addLink( SNDG , PHNX )

topos = { 'att': ( lambda: AttMplsTopo() ) }
