2 A simple topology to test resource model support.
7 from mininet
.log
import setLogLevel
8 from mininet
.node
import Controller
9 from emuvim
.dcemulator
.net
import DCNetwork
10 from emuvim
.api
.zerorpc
.compute
import ZeroRpcApiEndpoint
11 from emuvim
.api
.sonata
import SonataDummyGatekeeperEndpoint
12 from emuvim
.dcemulator
.resourcemodel
.upb
.simple
import UpbSimpleCloudDcRM
14 logging
.basicConfig(level
=logging
.INFO
)
17 def create_topology1():
19 # use a maximum of 50% cpu time for containers added to data centers
20 net
= DCNetwork(dc_emulation_max_cpu
=0.5, controller
=Controller
)
21 # add some data centers and create a topology
22 dc1
= net
.addDatacenter("dc1")
23 dc2
= net
.addDatacenter("dc2")
24 s1
= net
.addSwitch("s1")
25 net
.addLink(dc1
, s1
, delay
="10ms")
26 net
.addLink(dc2
, s1
, delay
="20ms")
28 # create and assign resource models for each DC
29 rm1
= UpbSimpleCloudDcRM(max_cu
=10, max_mu
=1024)
30 rm2
= UpbSimpleCloudDcRM(max_cu
=20)
31 dc1
.assignResourceModel(rm1
)
32 dc2
.assignResourceModel(rm2
)
34 # add the command line interface endpoint to each DC
35 zapi1
= ZeroRpcApiEndpoint("0.0.0.0", 4242)
36 zapi1
.connectDatacenter(dc1
)
37 zapi1
.connectDatacenter(dc2
)
38 # run API endpoint server (in another thread, don't block)
41 # add the SONATA dummy gatekeeper to each DC
42 sdkg1
= SonataDummyGatekeeperEndpoint("0.0.0.0", 8000)
43 sdkg1
.connectDatacenter(dc1
)
44 sdkg1
.connectDatacenter(dc2
)
45 # run the dummy gatekeeper (in another thread, don't block)
48 # start the emulation platform
50 print "Wait a moment and allocate some compute start some compute resources..."
52 dc1
.startCompute("vnf1")
53 dc1
.startCompute("vnf2", flavor_name
="tiny")
54 dc1
.startCompute("vnf3", flavor_name
="small")
55 dc2
.startCompute("vnf4", flavor_name
="medium")
63 setLogLevel('info') # set Mininet loglevel
67 if __name__
== '__main__':