blob: f145b53929cd644d34cccda8ac347a598bb2941d [file] [log] [blame]
peusterm44f34152015-12-11 14:32:34 +01001# We need a properly installed Dockernet
2from mininet.net import Mininet
3from mininet.node import Controller, Docker, OVSSwitch
peusterm266d2482015-12-27 13:55:43 +01004from mininet.link import *
peusterm44f34152015-12-11 14:32:34 +01005from mininet.cli import CLI
6import mininet.log
7import logging
8import os
peustermcbcd4c22015-12-28 11:33:42 +01009import zerorpc
peusterm44f34152015-12-11 14:32:34 +010010
11
12class RemoteMininetNetwork(object):
13
14 def __init__(self):
peustermcbcd4c22015-12-28 11:33:42 +010015 # set mininet loglevel
16 mininet.log.setLogLevel( 'info' )
peusterm44f34152015-12-11 14:32:34 +010017 self.net = Mininet( controller=Controller )
18 self.net.addController( 'c0' )
19
peustermcbcd4c22015-12-28 11:33:42 +010020 def start_net(self):
peusterm44f34152015-12-11 14:32:34 +010021 self.net.start()
22
peusterm266d2482015-12-27 13:55:43 +010023 def CLI(self):
peusterm44f34152015-12-11 14:32:34 +010024 CLI(self.net)
peusterm266d2482015-12-27 13:55:43 +010025
peustermcbcd4c22015-12-28 11:33:42 +010026 def stop_net(self):
peusterm266d2482015-12-27 13:55:43 +010027 try:
28 self.net.stop()
29 except Exception as e:
30 print e
31
peustermcbcd4c22015-12-28 11:33:42 +010032 def addHost(self, name, ip=None):
33 return str(self.net.addHost(name, ip=ip))
peusterm44f34152015-12-11 14:32:34 +010034
peustermcbcd4c22015-12-28 11:33:42 +010035 def addDocker(self, name, dimage, ip):
36 return str(self.net.addDocker(name, dimage=dimage, ip=ip))
peusterm44f34152015-12-11 14:32:34 +010037
peustermcbcd4c22015-12-28 11:33:42 +010038 def addSwitch(self, name):
peusterm266d2482015-12-27 13:55:43 +010039 # we have to use OVSSwitch to be able to do link attachments
40 # at runtime (switch.attach) method
peustermcbcd4c22015-12-28 11:33:42 +010041 return str(self.net.addSwitch(name, cls=OVSSwitch))
peusterm44f34152015-12-11 14:32:34 +010042
peustermcbcd4c22015-12-28 11:33:42 +010043 def addLink(self, node1, node2, port1=None, port2=None):
peusterm44f34152015-12-11 14:32:34 +010044 return str(self.net.addLink(node1, node2,
peustermcbcd4c22015-12-28 11:33:42 +010045 port1, port2))
peusterm44f34152015-12-11 14:32:34 +010046
peustermcbcd4c22015-12-28 11:33:42 +010047 def removeHost(self, name):
48 return self.net.removeHost(name)
peusterm266d2482015-12-27 13:55:43 +010049
50 def removeLink(self, link=None, node1=None, node2=None):
51 n1, n2 = self.net.get(node1), self.net.get(node2)
52 return self.net.removeLink(node1=n1, node2=n2)
53
peusterm44f34152015-12-11 14:32:34 +010054
55def start_server():
peustermcbcd4c22015-12-28 11:33:42 +010056 s = zerorpc.Server(RemoteMininetNetwork())
57 s.bind("tcp://0.0.0.0:4242")
58 s.run()