X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=dockernetrpc%2Frpc.py;h=f145b53929cd644d34cccda8ac347a598bb2941d;hb=9c252b6c886bc254872fd1dfe3c19fab6fe15570;hp=da0518ff4138376de800ccd71a6364b3951138d3;hpb=44f341588a94136cf299485cd81790afde83ab62;p=osm%2Fvim-emu.git diff --git a/dockernetrpc/rpc.py b/dockernetrpc/rpc.py index da0518f..f145b53 100644 --- a/dockernetrpc/rpc.py +++ b/dockernetrpc/rpc.py @@ -1,52 +1,58 @@ # We need a properly installed Dockernet from mininet.net import Mininet from mininet.node import Controller, Docker, OVSSwitch +from mininet.link import * from mininet.cli import CLI import mininet.log import logging import os -import Pyro4 +import zerorpc class RemoteMininetNetwork(object): def __init__(self): - mininet.log.setLogLevel( 'debug' ) + # set mininet loglevel + mininet.log.setLogLevel( 'info' ) self.net = Mininet( controller=Controller ) self.net.addController( 'c0' ) - def start(self): + def start_net(self): self.net.start() - def stop(self): + def CLI(self): CLI(self.net) - self.net.stop() - def addHost(self, name, cls=None, **params): - return str(self.net.addHost(name, cls=cls, **params)) + def stop_net(self): + try: + self.net.stop() + except Exception as e: + print e - def addDocker(self, name, **params): - return str(self.net.addDocker(name, **params)) + def addHost(self, name, ip=None): + return str(self.net.addHost(name, ip=ip)) - def addSwitch(self, name, cls=None, **params): - return str(self.net.addSwitch(name, cls=cls, **params)) + def addDocker(self, name, dimage, ip): + return str(self.net.addDocker(name, dimage=dimage, ip=ip)) - def addLink(self, node1, node2, port1=None, port2=None, - cls=None, **params): + def addSwitch(self, name): + # we have to use OVSSwitch to be able to do link attachments + # at runtime (switch.attach) method + return str(self.net.addSwitch(name, cls=OVSSwitch)) + + def addLink(self, node1, node2, port1=None, port2=None): return str(self.net.addLink(node1, node2, - port1, port2, cls=cls, **params)) + port1, port2)) + + def removeHost(self, name): + return self.net.removeHost(name) + + def removeLink(self, link=None, node1=None, node2=None): + n1, n2 = self.net.get(node1), self.net.get(node2) + return self.net.removeLink(node1=n1, node2=n2) def start_server(): - daemon = Pyro4.Daemon() - # ATTENTION: - # we need a PyroNS instance to be running: pyro4-ns (in new terminal) - ns = Pyro4.locateNS() - uri = daemon.register(RemoteMininetNetwork()) - # map object URI to a nice name - ns.register("remote.mininet", uri) - - logging.info("Server URI is: %s", uri) - - # Start the server... - daemon.requestLoop() + s = zerorpc.Server(RemoteMininetNetwork()) + s.bind("tcp://0.0.0.0:4242") + s.run()