cleanup networking api, rest and cli and unittest
[osm/vim-emu.git] / src / emuvim / examples / demo_emulator_mano_integration.py
1 import logging
2 from mininet.log import setLogLevel
3 from emuvim.dcemulator.net import DCNetwork
4 from emuvim.api.openstack.openstack_api_endpoint import OpenstackApiEndpoint
5 from emuvim.api.rest.rest_api_endpoint import RestApiEndpoint
6
7
8 logging.basicConfig(level=logging.INFO)
9 setLogLevel('info') # set Mininet loglevel
10 logging.getLogger('werkzeug').setLevel(logging.DEBUG)
11
12
13 class DemoTopology(DCNetwork):
14 """
15 This is a 2x2 PoP topology used for the emulator MANO integration demo.
16 """
17
18 def __init__(self):
19 """
20 Initialize multi PoP emulator network.
21 """
22 super(DemoTopology, self).__init__(
23 monitor=True,
24 enable_learning=True
25 )
26 # define members for later use
27 self.pop1 = None
28 self.pop2 = None
29 self.pop3 = None
30 self.pop4 = None
31 self.sw1 = None
32 self.sw2 = None
33
34 def setup(self):
35 self._create_switches()
36 self._create_pops()
37 self._create_links()
38 self._create_rest_api_endpoints()
39 self._create_openstack_api_endpoints()
40
41 def _create_switches(self):
42 self.sw1 = self.addSwitch("s1")
43 self.sw2 = self.addSwitch("s2")
44
45 def _create_pops(self):
46 # two PoPs for the SONATA SP
47 self.pop1 = self.addDatacenter("sonata-pop1")
48 self.pop2 = self.addDatacenter("sonata-pop2")
49 # two PoPs for the OSM SP
50 self.pop3 = self.addDatacenter("osm-pop1")
51 self.pop4 = self.addDatacenter("osm-pop2")
52
53 def _create_links(self):
54 # SONATA island
55 self.addLink(self.pop1, self.sw1, delay="10ms")
56 self.addLink(self.pop2, self.sw1, delay="10ms")
57 # OSM island
58 self.addLink(self.pop3, self.sw2, delay="10ms")
59 self.addLink(self.pop4, self.sw2, delay="10ms")
60
61 def _create_openstack_api_endpoints(self):
62 # create
63 api1 = OpenstackApiEndpoint("0.0.0.0", 6001)
64 api2 = OpenstackApiEndpoint("0.0.0.0", 6002)
65 api3 = OpenstackApiEndpoint("0.0.0.0", 6003)
66 api4 = OpenstackApiEndpoint("0.0.0.0", 6004)
67 # connect PoPs
68 api1.connect_datacenter(self.pop1)
69 api2.connect_datacenter(self.pop2)
70 api3.connect_datacenter(self.pop3)
71 api4.connect_datacenter(self.pop4)
72 # connect network
73 api1.connect_dc_network(self)
74 api2.connect_dc_network(self)
75 api3.connect_dc_network(self)
76 api4.connect_dc_network(self)
77 # start
78 api1.start()
79 api2.start()
80 api3.start()
81 api4.start()
82
83 def _create_rest_api_endpoints(self):
84 # create
85 apiR = RestApiEndpoint("0.0.0.0", 5001)
86 # connect PoPs
87 apiR.connectDatacenter(self.pop1)
88 apiR.connectDatacenter(self.pop2)
89 apiR.connectDatacenter(self.pop3)
90 apiR.connectDatacenter(self.pop4)
91 # connect network
92 apiR.connectDCNetwork(self)
93 # start
94 apiR.start()
95
96
97 def main():
98 t = DemoTopology()
99 t.setup()
100 t.start()
101 t.CLI()
102 t.stop()
103
104
105 if __name__ == '__main__':
106 main()