X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=emuvim%2Fdcemulator%2Fnet.py;h=83ac619e3676925496b6ff2528833075ed8ad957;hb=bd44f4aedca9d48d150939cd76d7cefe7e386aa2;hp=478c587dda2440e530eec3dae0a70daf9b945682;hpb=a2ad9ffafff966fbfc17ba1d5782a8ef90807428;p=osm%2Fvim-emu.git diff --git a/emuvim/dcemulator/net.py b/emuvim/dcemulator/net.py index 478c587..83ac619 100644 --- a/emuvim/dcemulator/net.py +++ b/emuvim/dcemulator/net.py @@ -4,13 +4,13 @@ Distributed Cloud Emulator (dcemulator) """ 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): @@ -28,7 +28,7 @@ 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): @@ -77,6 +77,18 @@ class DCNetwork(object): 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): @@ -91,7 +103,7 @@ class DCNetwork(object): """ 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): """ @@ -99,6 +111,18 @@ class DCNetwork(object): """ 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():