X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fnet.py;h=80fb2f84ea90c5d2ce2e947f6eb6f0ee766defb2;hb=a4d8479f913ed45b18199d70c4b524fca73a0a21;hp=81d16ab31b3c38377265fbacb827ee49d09db695;hpb=391773a662ca190e0b41bd9c5293826ed24828d9;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py index 81d16ab..80fb2f8 100755 --- a/src/emuvim/dcemulator/net.py +++ b/src/emuvim/dcemulator/net.py @@ -27,7 +27,10 @@ class DCNetwork(Dockernet): This class is used by topology definition scripts. """ - def __init__(self, controller=RemoteController, dc_emulation_max_cpu=1.0, **kwargs): + def __init__(self, controller=RemoteController, + dc_emulation_max_cpu=1.0, # fraction of overall CPU time for emulation + dc_emulation_max_mem=512, # emulation max mem in MB + **kwargs): """ Create an extended version of a Dockernet network :param dc_emulation_max_cpu: max. CPU time used by containers in data centers @@ -40,10 +43,13 @@ class DCNetwork(Dockernet): Dockernet.__init__( self, switch=OVSKernelSwitch, **kwargs) - # start Ryu controller - self.startRyu() + # Ryu management + self.ryu_process = None + if controller == RemoteController: + # start Ryu controller + self.startRyu() - # add a remote controller to be able to use Ryu + # add the specified controller self.addController('c0', controller=controller) # graph of the complete DC network @@ -53,7 +59,8 @@ class DCNetwork(Dockernet): self.monitor_agent = DCNetworkMonitor(self) # initialize resource model registrar - self.rm_registrar = ResourceModelRegistrar(dc_emulation_max_cpu) + self.rm_registrar = ResourceModelRegistrar( + dc_emulation_max_cpu, dc_emulation_max_mem) def addDatacenter(self, label, metadata={}): """ @@ -208,18 +215,18 @@ class DCNetwork(Dockernet): # start Ryu controller with rest-API python_install_path = site.getsitepackages()[0] ryu_path = python_install_path + '/ryu/app/simple_switch_13.py' - ryu_path2 = python_install_path + '/ryu/app/ofctl_rest.py' + ryu_path2 = python_install_path + '/ryu/app/ofctl_rest.py' # change the default Openflow controller port to 6653 (official IANA-assigned port number), as used by Mininet # Ryu still uses 6633 as default ryu_option = '--ofp-tcp-listen-port' ryu_of_port = '6653' - ryu_cmd = 'ryu-manager' + ryu_cmd = 'ryu-manager' FNULL = open("/tmp/ryu.log", 'w') self.ryu_process = Popen([ryu_cmd, ryu_path, ryu_path2, ryu_option, ryu_of_port], stdout=FNULL, stderr=FNULL) time.sleep(1) def stopRyu(self): - if self.ryu_process: + if self.ryu_process is not None: self.ryu_process.terminate() self.ryu_process.kill()