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
8 logging
.basicConfig(level
=logging
.INFO
)
9 setLogLevel('info') # set Mininet loglevel
10 logging
.getLogger('werkzeug').setLevel(logging
.DEBUG
)
13 class DemoTopology(DCNetwork
):
15 This is a 2x2 PoP topology used for the emulator MANO integration demo.
20 Initialize multi PoP emulator network.
22 super(DemoTopology
, self
).__init
__(
26 # define members for later use
35 self
._create
_switches
()
38 self
._create
_rest
_api
_endpoints
()
39 self
._create
_openstack
_api
_endpoints
()
41 def _create_switches(self
):
42 self
.sw1
= self
.addSwitch("s1")
43 self
.sw2
= self
.addSwitch("s2")
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")
53 def _create_links(self
):
55 self
.addLink(self
.pop1
, self
.sw1
, delay
="10ms")
56 self
.addLink(self
.pop2
, self
.sw1
, delay
="10ms")
58 self
.addLink(self
.pop3
, self
.sw2
, delay
="10ms")
59 self
.addLink(self
.pop4
, self
.sw2
, delay
="10ms")
61 def _create_openstack_api_endpoints(self
):
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)
68 api1
.connect_datacenter(self
.pop1
)
69 api2
.connect_datacenter(self
.pop2
)
70 api3
.connect_datacenter(self
.pop3
)
71 api4
.connect_datacenter(self
.pop4
)
73 api1
.connect_dc_network(self
)
74 api2
.connect_dc_network(self
)
75 api3
.connect_dc_network(self
)
76 api4
.connect_dc_network(self
)
83 def _create_rest_api_endpoints(self
):
85 apiR
= RestApiEndpoint("0.0.0.0", 5001)
87 apiR
.connectDatacenter(self
.pop1
)
88 apiR
.connectDatacenter(self
.pop2
)
89 apiR
.connectDatacenter(self
.pop3
)
90 apiR
.connectDatacenter(self
.pop4
)
92 apiR
.connectDCNetwork(self
)
105 if __name__
== '__main__':