blob: f145b53929cd644d34cccda8ac347a598bb2941d [file] [log] [blame]
# 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 zerorpc
class RemoteMininetNetwork(object):
def __init__(self):
# set mininet loglevel
mininet.log.setLogLevel( 'info' )
self.net = Mininet( controller=Controller )
self.net.addController( 'c0' )
def start_net(self):
self.net.start()
def CLI(self):
CLI(self.net)
def stop_net(self):
try:
self.net.stop()
except Exception as e:
print e
def addHost(self, name, ip=None):
return str(self.net.addHost(name, ip=ip))
def addDocker(self, name, dimage, ip):
return str(self.net.addDocker(name, dimage=dimage, ip=ip))
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))
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():
s = zerorpc.Server(RemoteMininetNetwork())
s.bind("tcp://0.0.0.0:4242")
s.run()