blob: da0518ff4138376de800ccd71a6364b3951138d3 [file] [log] [blame]
# We need a properly installed Dockernet
from mininet.net import Mininet
from mininet.node import Controller, Docker, OVSSwitch
from mininet.cli import CLI
import mininet.log
import logging
import os
import Pyro4
class RemoteMininetNetwork(object):
def __init__(self):
mininet.log.setLogLevel( 'debug' )
self.net = Mininet( controller=Controller )
self.net.addController( 'c0' )
def start(self):
self.net.start()
def stop(self):
CLI(self.net)
self.net.stop()
def addHost(self, name, cls=None, **params):
return str(self.net.addHost(name, cls=cls, **params))
def addDocker(self, name, **params):
return str(self.net.addDocker(name, **params))
def addSwitch(self, name, cls=None, **params):
return str(self.net.addSwitch(name, cls=cls, **params))
def addLink(self, node1, node2, port1=None, port2=None,
cls=None, **params):
return str(self.net.addLink(node1, node2,
port1, port2, cls=cls, **params))
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()