6ea568a5aa04267be2cf79061847c64a0421d469
[osm/vim-emu.git] / src / emuvim / examples / sonata_y1_demo_topology_1.py
1 """
2 A simple topology with two PoPs for the y1 demo story board.
3
4 (dc1) <<-->> s1 <<-->> (dc2)
5 """
6
7 import logging
8 from mininet.log import setLogLevel
9 from emuvim.dcemulator.net import DCNetwork
10 from emuvim.api.zerorpc.compute import ZeroRpcApiEndpoint
11 from emuvim.api.sonata import SonataDummyGatekeeperEndpoint
12
13 logging.basicConfig(level=logging.INFO)
14
15
16 def create_topology1():
17 # create topology
18 net = DCNetwork()
19 dc1 = net.addDatacenter("dc1")
20 dc2 = net.addDatacenter("dc2")
21 s1 = net.addSwitch("s1")
22 net.addLink(dc1, s1, delay="10ms")
23 net.addLink(dc2, s1, delay="20ms")
24
25 # add the command line interface endpoint to each DC
26 zapi1 = ZeroRpcApiEndpoint("0.0.0.0", 4242)
27 zapi1.connectDatacenter(dc1)
28 zapi1.connectDatacenter(dc2)
29 # run API endpoint server (in another thread, don't block)
30 zapi1.start()
31
32 # add the SONATA dummy gatekeeper to each DC
33 sdkg1 = SonataDummyGatekeeperEndpoint("0.0.0.0", 5000)
34 sdkg1.connectDatacenter(dc1)
35 sdkg1.connectDatacenter(dc2)
36 # run the dummy gatekeeper (in another thread, don't block)
37 sdkg1.start()
38
39 # start the emulation platform
40 net.start()
41 net.CLI()
42 net.stop()
43
44
45 def main():
46 setLogLevel('info') # set Mininet loglevel
47 create_topology1()
48
49
50 if __name__ == '__main__':
51 main()