Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This helps with virtualenv although it can open up another security hole if you end up using an unexpected python interpreter. Overall it seems to make sense to err on the side of usability but it's good to be aware of security. However, for the remaining utility scripts that require python 2, we explicitly note this with #!/usr/bin/python2.
executable file
37 lines (29 sloc)
1.06 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python | |
| """ | |
| Create a network where different switches are connected to | |
| different controllers, by creating a custom Switch() subclass. | |
| """ | |
| from mininet.net import Mininet | |
| from mininet.node import OVSSwitch, Controller, RemoteController | |
| from mininet.topolib import TreeTopo | |
| from mininet.log import setLogLevel | |
| from mininet.cli import CLI | |
| setLogLevel( 'info' ) | |
| # Two local and one "external" controller (which is actually c0) | |
| # Ignore the warning message that the remote isn't (yet) running | |
| c0 = Controller( 'c0', port=6633 ) | |
| c1 = Controller( 'c1', port=6634 ) | |
| c2 = RemoteController( 'c2', ip='127.0.0.1', port=6633 ) | |
| cmap = { 's1': c0, 's2': c1, 's3': c2 } | |
| class MultiSwitch( OVSSwitch ): | |
| "Custom Switch() subclass that connects to different controllers" | |
| def start( self, controllers ): | |
| return OVSSwitch.start( self, [ cmap[ self.name ] ] ) | |
| topo = TreeTopo( depth=2, fanout=2 ) | |
| net = Mininet( topo=topo, switch=MultiSwitch, build=False, waitConnected=True ) | |
| for c in [ c0, c1 ]: | |
| net.addController(c) | |
| net.build() | |
| net.start() | |
| CLI( net ) | |
| net.stop() |