initial attempt to add a remote interface to mininet
[osm/vim-emu.git] / dockernetrpc / rpc.py
1 # We need a properly installed Dockernet
2 from mininet.net import Mininet
3 from mininet.node import Controller, Docker, OVSSwitch
4 from mininet.cli import CLI
5 import mininet.log
6 import logging
7 import os
8 import Pyro4
9
10
11 class RemoteMininetNetwork(object):
12
13 def __init__(self):
14 mininet.log.setLogLevel( 'debug' )
15 self.net = Mininet( controller=Controller )
16 self.net.addController( 'c0' )
17
18 def start(self):
19 self.net.start()
20
21 def stop(self):
22 CLI(self.net)
23 self.net.stop()
24
25 def addHost(self, name, cls=None, **params):
26 return str(self.net.addHost(name, cls=cls, **params))
27
28 def addDocker(self, name, **params):
29 return str(self.net.addDocker(name, **params))
30
31 def addSwitch(self, name, cls=None, **params):
32 return str(self.net.addSwitch(name, cls=cls, **params))
33
34 def addLink(self, node1, node2, port1=None, port2=None,
35 cls=None, **params):
36 return str(self.net.addLink(node1, node2,
37 port1, port2, cls=cls, **params))
38
39
40 def start_server():
41 daemon = Pyro4.Daemon()
42 # ATTENTION:
43 # we need a PyroNS instance to be running: pyro4-ns (in new terminal)
44 ns = Pyro4.locateNS()
45 uri = daemon.register(RemoteMininetNetwork())
46 # map object URI to a nice name
47 ns.register("remote.mininet", uri)
48
49 logging.info("Server URI is: %s", uri)
50
51 # Start the server...
52 daemon.requestLoop()