Rest-intent
- add get intent by id
- fix problem of not returning the correct intent id at creation to UI.
- create script for mesh mininet topology
Change-Id: I5fc4f008ab2d31a63d222f3e42502408dc25fe6b
diff --git a/test-network/mininet/mesh_topology.py b/test-network/mininet/mesh_topology.py
new file mode 100755
index 0000000..5cd8091
--- /dev/null
+++ b/test-network/mininet/mesh_topology.py
@@ -0,0 +1,118 @@
+#!/usr/bin/python
+"""Custom topology example
+
+Two directly connected switches plus a host for each switch:
+
+ host --- switch --- switch --- host
+
+Adding the 'topos' dict with a key/value pair to generate our newly defined
+topology enables one to pass in '--topo=mytopo' from the command line.
+"""
+
+import sys, getopt
+from mininet.net import Mininet
+from mininet.node import Controller, RemoteController
+from mininet.log import setLogLevel, info, error, warn, debug
+from mininet.topo import Topo
+from mininet.link import Link, TCLink
+from mininet.util import dumpNodeConnections
+
+class MyController( Controller ):
+ def __init__( self, name, ip='127.0.0.1', port=6633, **kwargs):
+ """Init.
+ name: name to give controller
+ ip: the IP address where the remote controller is
+ listening
+ port: the port where the remote controller is listening"""
+ Controller.__init__( self, name, ip=ip, port=port, **kwargs )
+
+ def start( self ):
+ "Overridden to do nothing."
+ return
+
+ def stop( self ):
+ "Overridden to do nothing."
+ return
+
+ def checkListening( self ):
+ "Warn if remote controller is not accessible"
+ listening = self.cmd( "echo A | telnet -e A %s %d" %
+ ( self.ip, self.port ) )
+ if 'Unable' in listening:
+ warn( "Unable to contact the remote controller"
+ " at %s:%d\n" % ( self.ip, self.port ) )
+
+
+class MyTopo( Topo ):
+ "Simple topology example."
+
+ def __init__( self, max_switches ):
+ "Create custom topo."
+
+ # Initialize topology
+ Topo.__init__( self )
+
+ installed_switches = {}
+ # add switches first
+ for sw in range( max_switches ):
+ sw_str = "sw" + `sw + 1`
+ msw = self.addSwitch( sw_str )
+ installed_switches[sw_str] = msw
+
+ # create links between switches
+ for sw in range( max_switches ):
+ next_sw = sw + 1
+ for link in range( next_sw, max_switches ):
+ link_from = "sw" + `next_sw`
+ link_to = "sw" + `link + 1`
+ print "link_from ", link_from, " link to ", link_to
+ self.addLink( link_from, link_to )
+
+ # finally add links to hosts
+ for sw in range( max_switches ):
+ sw_str = "sw" + `sw + 1`
+ host_str = "h" + `sw + 1`
+ mhost = self.addHost( host_str )
+ msw = installed_switches[sw_str]
+ self.addLink( msw, mhost)
+
+def main(argv):
+ max_switches = ""
+ try:
+ opts,args = getopt.getopt(argv, "hs:", ["help", "switches="])
+ except getopt.GetoptError:
+ print "Usage mesh_topology.py [options]"
+ print "-s, --switches number of switches to set"
+ sys.exit(2)
+ for opt, arg in opts:
+ if opt == '-h':
+ print "Usage mesh_topology.py [options]"
+ print "-s, --switches number of switches to set"
+ sys.exit()
+ elif opt in ("-s", "--switches"):
+ max_switches = arg
+
+ switches = 4
+ if max_switches != "":
+ switches = int(max_switches)
+ topos = { 'mytopo': ( lambda: MyTopo(switches) ) }
+ net = Mininet(topo=MyTopo(switches), controller=MyController, link=TCLink)
+ print dumpNodeConnections(net.switches)
+
+ for sw in range(switches):
+ next_sw = sw + 1
+ mhost = "h" + `next_sw`
+ host = net.get( mhost )
+ if next_sw > 255:
+ divisor = next_sw / 256
+ remainder = next_sw % 256
+ host.setMAC('00:00:%02x:%02x:%02x:%02x' % (192, 168, divisor, remainder))
+ print "Host", host.name, "has IP address", host.IP(), "and MAC address", host.MAC()
+ else:
+ host.setMAC('00:00:%02x:%02x:%02x:%02x' % (192, 168, 0, next_sw))
+ print "Host", host.name, "has IP address", host.IP(), "and MAC address", host.MAC()
+
+ net.start()
+
+if __name__ == "__main__":
+ main(sys.argv[1:])