"""
import logging
-from mininet.net import Mininet
+from mininet.net import Dockernet
from mininet.node import Controller, OVSKernelSwitch, Switch, Docker, Host
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Link
-from node import Datacenter
+from node import Datacenter, EmulatorCompute
class DCNetwork(object):
# create a Mininet/Dockernet network
setLogLevel('info') # set Mininet loglevel
- self.mnet = Mininet(controller=Controller, switch=OVSKernelSwitch)
+ self.mnet = Dockernet(controller=Controller, switch=OVSKernelSwitch)
self.mnet.addController('c0')
def addDatacenter(self, name):
node2 = self.switches[node2]
if isinstance( node2, Datacenter ):
node2 = node2.switch
+ # try to give containers a default IP
+ if isinstance( node1, Docker ):
+ if not "params1" in params:
+ params["params1"] = {}
+ if not "ip" in params["params1"]:
+ params["params1"]["ip"] = self.getNextIp()
+ if isinstance( node2, Docker ):
+ if not "params2" in params:
+ params["params2"] = {}
+ if not "ip" in params["params2"]:
+ params["params2"]["ip"] = self.getNextIp()
+
return self.mnet.addLink(node1, node2, **params) # TODO we need TCLinks with user defined performance here
def removeLink(self, link=None, node1=None, node2=None):
"""
Wrapper for addDocker method provided by Dockernet.
"""
- return self.mnet.addDocker( name, **params)
+ return self.mnet.addDocker( name, cls=EmulatorCompute, **params)
def removeDocker( self, name, **params):
"""
"""
return self.mnet.removeDocker(name, **params)
+ def getNextIp(self):
+ return self.mnet.getNextIp()
+
+ def getAllContainers(self):
+ """
+ Returns a list with all containers within all data centers.
+ """
+ all_containers = []
+ for dc in self.dcs.itervalues():
+ all_containers += dc.listCompute()
+ return all_containers
+
def start(self):
# start
for dc in self.dcs.itervalues():