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