diff --git a/bin/mn b/bin/mn index 142208c..27cb95d 100755 --- a/bin/mn +++ b/bin/mn @@ -37,14 +37,14 @@ from mininet.util import buildTopo # built in topologies, created only when run TOPODEF = 'minimal' TOPOS = { 'minimal': lambda: SingleSwitchTopo( k=2 ), - 'linear': LinearTopo, - 'reversed': SingleSwitchReversedTopo, - 'single': SingleSwitchTopo, - 'tree': TreeTopo } + 'linear': LinearTopo, + 'reversed': SingleSwitchReversedTopo, + 'single': SingleSwitchTopo, + 'tree': TreeTopo } SWITCHDEF = 'ovsk' SWITCHES = { 'user': UserSwitch, - 'ovsk': OVSKernelSwitch, + 'ovsk': OVSKernelSwitch, 'ovsl': OVSLegacyKernelSwitch } HOSTDEF = 'proc' @@ -66,10 +66,13 @@ LINKS = { 'default': Link, # optional tests to run TESTS = [ 'cli', 'build', 'pingall', 'pingpair', 'iperf', 'all', 'iperfudp', - 'none' ] + 'none' ] -ALTSPELLING = { 'pingall': 'pingAll', 'pingpair': 'pingPair', - 'iperfudp': 'iperfUdp', 'iperfUDP': 'iperfUdp', 'prefixlen': 'prefixLen' } +ALTSPELLING = { 'pingall': 'pingAll', + 'pingpair': 'pingPair', + 'iperfudp': 'iperfUdp', + 'iperfUDP': 'iperfUdp', + 'prefixlen': 'prefixLen' } def addDictOption( opts, choicesDict, default, name, helpStr=None ): @@ -81,14 +84,14 @@ def addDictOption( opts, choicesDict, default, name, helpStr=None ): help: string""" if default not in choicesDict: raise Exception( 'Invalid default %s for choices dict: %s' % - ( default, name ) ) + ( default, name ) ) if not helpStr: helpStr = ( '|'.join( sorted( choicesDict.keys() ) ) + - '[,param=value...]' ) + '[,param=value...]' ) opts.add_option( '--' + name, - type='string', - default = default, - help = helpStr ) + type='string', + default = default, + help = helpStr ) def version( *_args ): @@ -158,36 +161,36 @@ class MininetRunner( object ): addDictOption( opts, TOPOS, TOPODEF, 'topo' ) opts.add_option( '--clean', '-c', action='store_true', - default=False, help='clean and exit' ) + default=False, help='clean and exit' ) opts.add_option( '--custom', type='string', default=None, - help='read custom topo and node params from .py file' ) + help='read custom topo and node params from .py file' ) opts.add_option( '--test', type='choice', choices=TESTS, - default=TESTS[ 0 ], - help='|'.join( TESTS ) ) + default=TESTS[ 0 ], + help='|'.join( TESTS ) ) opts.add_option( '--xterms', '-x', action='store_true', - default=False, help='spawn xterms for each node' ) + default=False, help='spawn xterms for each node' ) opts.add_option( '--ipbase', '-i', type='string', default='10.0.0.0/8', help='base IP address for hosts' ) opts.add_option( '--mac', action='store_true', - default=False, help='automatically set host MACs' ) + default=False, help='automatically set host MACs' ) opts.add_option( '--arp', action='store_true', - default=False, help='set all-pairs ARP entries' ) + default=False, help='set all-pairs ARP entries' ) opts.add_option( '--verbosity', '-v', type='choice', - choices=LEVELS.keys(), default = 'info', - help = '|'.join( LEVELS.keys() ) ) + choices=LEVELS.keys(), default = 'info', + help = '|'.join( LEVELS.keys() ) ) opts.add_option( '--innamespace', action='store_true', - default=False, help='sw and ctrl in namespace?' ) + default=False, help='sw and ctrl in namespace?' ) opts.add_option( '--listenport', type='int', default=6635, help='base port for passive switch listening' ) opts.add_option( '--nolistenport', action='store_true', - default=False, help="don't use passive listening port") + default=False, help="don't use passive listening port") opts.add_option( '--pre', type='string', default=None, - help='CLI script to run before tests' ) + help='CLI script to run before tests' ) opts.add_option( '--post', type='string', default=None, - help='CLI script to run after tests' ) + help='CLI script to run after tests' ) opts.add_option( '--prefixlen', type='int', default=8, - help='prefix length (e.g. /8) for automatic ' - 'network configuration' ) + help='prefix length (e.g. /8) for automatic ' + 'network configuration' ) opts.add_option( '--pin', action='store_true', default=False, help="pin hosts to CPU cores " "(requires --host cfs or --host rt)" ) diff --git a/examples/consoles.py b/examples/consoles.py index 35fa205..ea2e28d 100755 --- a/examples/consoles.py +++ b/examples/consoles.py @@ -74,11 +74,11 @@ class Console( Frame ): "Pop up a new terminal window for a node." net.terms += makeTerms( [ node ], title ) label = Button( self, text=self.node.name, command=newTerm, - **self.buttonStyle ) + **self.buttonStyle ) label.pack( side='top', fill='x' ) text = Text( self, wrap='word', **self.textStyle ) ybar = Scrollbar( self, orient='vertical', width=7, - command=text.yview ) + command=text.yview ) text.configure( yscrollcommand=ybar.set ) text.pack( side='left', expand=True, fill='both' ) ybar.pack( side='right', fill='y' ) @@ -95,7 +95,7 @@ class Console( Frame ): # way to trigger a file event handler from Tk's # event loop! self.tk.createfilehandler( self.node.stdout, READABLE, - self.handleReadable ) + self.handleReadable ) # We're not a terminal (yet?), so we ignore the following # control characters other than [\b\n\r] @@ -169,11 +169,8 @@ class Graph( Frame ): "Graph that we can add bars to over time." - def __init__( self, parent=None, - bg = 'white', - gheight=200, gwidth=500, - barwidth=10, - ymax=3.5,): + def __init__( self, parent=None, bg = 'white', gheight=200, gwidth=500, + barwidth=10, ymax=3.5,): Frame.__init__( self, parent ) @@ -195,7 +192,7 @@ class Graph( Frame ): width = 25 ymax = self.ymax scale = Canvas( self, width=width, height=height, - background=self.bg ) + background=self.bg ) opts = { 'fill': 'red' } # Draw scale line scale.create_line( width - 1, height, width - 1, 0, **opts ) @@ -211,7 +208,7 @@ class Graph( Frame ): ofs = 20 height = self.gheight + ofs self.graph.configure( scrollregion=( 0, -ofs, - self.xpos * self.barwidth, height ) ) + self.xpos * self.barwidth, height ) ) self.scale.configure( scrollregion=( 0, -ofs, 0, height ) ) def yview( self, *args ): @@ -231,7 +228,7 @@ class Graph( Frame ): xbar = Scrollbar( self, orient='horizontal', command=graph.xview ) ybar = Scrollbar( self, orient='vertical', command=self.yview ) graph.configure( xscrollcommand=xbar.set, yscrollcommand=ybar.set, - scrollregion=(0, 0, width, height ) ) + scrollregion=(0, 0, width, height ) ) scale.configure( yscrollcommand=ybar.set ) # Layout diff --git a/examples/hwintf.py b/examples/hwintf.py index 71c72a3..d8d3fe2 100755 --- a/examples/hwintf.py +++ b/examples/hwintf.py @@ -21,7 +21,7 @@ def checkIntf( intf ): ips = re.findall( r'\d+\.\d+\.\d+\.\d+', quietRun( 'ifconfig ' + intf ) ) if ips: error( 'Error:', intf, 'has an IP address,' - 'and is probably in use!\n' ) + 'and is probably in use!\n' ) exit( 1 ) if __name__ == '__main__': diff --git a/examples/linearbandwidth.py b/examples/linearbandwidth.py index c361045..3fd06c7 100755 --- a/examples/linearbandwidth.py +++ b/examples/linearbandwidth.py @@ -68,7 +68,7 @@ def linearBandwidthTest( lengths ): hostCount = switchCount + 1 switches = { 'reference user': UserSwitch, - 'Open vSwitch kernel': OVSKernelSwitch } + 'Open vSwitch kernel': OVSKernelSwitch } topo = LinearTestTopo( hostCount ) diff --git a/examples/miniedit.py b/examples/miniedit.py index d90c685..89c97e6 100755 --- a/examples/miniedit.py +++ b/examples/miniedit.py @@ -112,7 +112,7 @@ class MiniEdit( Frame ): appMenu = Menu( mbar, tearoff=False ) mbar.add_cascade( label=self.appName, font=font, menu=appMenu ) appMenu.add_command( label='About MiniEdit', command=self.about, - font=font) + font=font) appMenu.add_separator() appMenu.add_command( label='Quit', command=self.quit, font=font ) @@ -127,7 +127,7 @@ class MiniEdit( Frame ): editMenu = Menu( mbar, tearoff=False ) mbar.add_cascade( label="Edit", font=font, menu=editMenu ) editMenu.add_command( label="Cut", font=font, - command=lambda: self.deleteSelection( None ) ) + command=lambda: self.deleteSelection( None ) ) runMenu = Menu( mbar, tearoff=False ) mbar.add_cascade( label="Run", font=font, menu=runMenu ) @@ -143,7 +143,7 @@ class MiniEdit( Frame ): f = Frame( self ) canvas = Canvas( f, width=self.cwidth, height=self.cheight, - bg=self.bg ) + bg=self.bg ) # Scroll bars xbar = Scrollbar( f, orient='horizontal', command=canvas.xview ) @@ -177,7 +177,7 @@ class MiniEdit( Frame ): bbox = self.canvas.bbox( 'all' ) if bbox is not None: self.canvas.configure( scrollregion=( 0, 0, bbox[ 2 ], - bbox[ 3 ] ) ) + bbox[ 3 ] ) ) def canvasx( self, x_root ): "Convert root x coordinate to canvas coordinate." @@ -223,7 +223,7 @@ class MiniEdit( Frame ): for cmd, color in [ ( 'Stop', 'darkRed' ), ( 'Run', 'darkGreen' ) ]: doCmd = getattr( self, 'do' + cmd ) b = Button( toolbar, text=cmd, font=self.smallFont, - fg=color, command=doCmd ) + fg=color, command=doCmd ) b.pack( fill='x', side='bottom' ) return toolbar @@ -308,7 +308,7 @@ class MiniEdit( Frame ): def nodeIcon( self, node, name ): "Create a new node icon." icon = Button( self.canvas, image=self.images[ node ], - text=name, compound='top' ) + text=name, compound='top' ) # Unfortunately bindtags wants a tuple bindtags = [ str( self.nodeBindings ) ] bindtags += list( icon.bindtags() ) @@ -322,8 +322,8 @@ class MiniEdit( Frame ): self.nodeCount += 1 name = self.nodePrefixes[ node ] + str( self.nodeCount ) icon = self.nodeIcon( node, name ) - item = self.canvas.create_window( x, y, anchor='c', - window=icon, tags=node ) + item = self.canvas.create_window( x, y, anchor='c', window=icon, + tags=node ) self.widgetToItem[ icon ] = item self.itemToWidget[ item ] = icon self.selectItem( item ) @@ -437,7 +437,7 @@ class MiniEdit( Frame ): item = self.widgetToItem[ w ] x, y = self.canvas.coords( item ) self.link = self.canvas.create_line( x, y, x, y, width=4, - fill='blue', tag='link' ) + fill='blue', tag='link' ) self.linkx, self.linky = x, y self.linkWidget = w self.linkItem = item diff --git a/examples/multiping.py b/examples/multiping.py index bb53526..3bd231c 100755 --- a/examples/multiping.py +++ b/examples/multiping.py @@ -40,7 +40,7 @@ def startpings( host, targetips ): 'done &' ) print ( '*** Host %s (%s) will be pinging ips: %s' % - ( host.name, host.IP(), targetips ) ) + ( host.name, host.IP(), targetips ) ) host.cmd( cmd ) diff --git a/examples/multipoll.py b/examples/multipoll.py index f670827..aef1b10 100755 --- a/examples/multipoll.py +++ b/examples/multipoll.py @@ -19,7 +19,7 @@ def monitorFiles( outfiles, seconds, timeoutms ): tails, fdToFile, fdToHost = {}, {}, {} for h, outfile in outfiles.iteritems(): tail = Popen( [ 'tail', '-f', outfile ], - stdout=PIPE, stderr=devnull ) + stdout=PIPE, stderr=devnull ) fd = tail.stdout.fileno() tails[ h ] = tail fdToFile[ fd ] = tail.stdout diff --git a/examples/treeping64.py b/examples/treeping64.py index b0737da..8385a33 100755 --- a/examples/treeping64.py +++ b/examples/treeping64.py @@ -10,9 +10,9 @@ def treePing64(): "Run ping test on 64-node tree networks." results = {} - switches = { # 'reference kernel': KernelSwitch, - 'reference user': UserSwitch, - 'Open vSwitch kernel': OVSKernelSwitch } + switches = { # 'reference kernel': KernelSwitch, + 'reference user': UserSwitch, + 'Open vSwitch kernel': OVSKernelSwitch } for name in switches: print "*** Testing", name, "datapath" diff --git a/mininet/cli.py b/mininet/cli.py index ce59853..f54d5c3 100644 --- a/mininet/cli.py +++ b/mininet/cli.py @@ -192,7 +192,7 @@ class CLI( Cmd ): "List interfaces." for node in self.nodelist: output( '%s: %s\n' % - ( node.name, ','.join( node.intfNames() ) ) ) + ( node.name, ','.join( node.intfNames() ) ) ) def do_dump( self, _line ): "Dump node info." @@ -303,8 +303,8 @@ class CLI( Cmd ): node = self.nodemap[ first ] # Substitute IP addresses for node names in command rest = [ self.nodemap[ arg ].IP() - if arg in self.nodemap else arg - for arg in rest ] + if arg in self.nodemap else arg + for arg in rest ] rest = ' '.join( rest ) # Run cmd on node: builtin = isShellBuiltin( first ) diff --git a/mininet/link.py b/mininet/link.py index 3930ead..43cd207 100644 --- a/mininet/link.py +++ b/mininet/link.py @@ -202,13 +202,13 @@ class TCIntf( Intf ): elif use_tbf: if latency_ms is None: latency_ms = 15 * 8 / bw - cmds += ['%s qdisc add dev %s root handle 1: tbf ' + - 'rate %fMbit burst 15000 latency %fms' % - ( bw, latency_ms ) ] + cmds += [ '%s qdisc add dev %s root handle 1: tbf ' + + 'rate %fMbit burst 15000 latency %fms' % + ( bw, latency_ms ) ] else: cmds += [ '%s qdisc add dev %s root handle 1:0 htb default 1', - '%s class add dev %s parent 1:0 classid 1:1 htb ' + - 'rate %fMbit burst 15k' % bw ] + '%s class add dev %s parent 1:0 classid 1:1 htb ' + + 'rate %fMbit burst 15k' % bw ] parent = ' parent 1:1 ' # ECN or RED @@ -282,9 +282,10 @@ class TCIntf( Intf ): # Bandwidth limits via various methods bwcmds, parent = self.bwCmds( bw=bw, speedup=speedup, - use_hfsc=use_hfsc, use_tbf=use_tbf, - latency_ms=latency_ms, enable_ecn=enable_ecn, - enable_red=enable_red ) + use_hfsc=use_hfsc, use_tbf=use_tbf, + latency_ms=latency_ms, + enable_ecn=enable_ecn, + enable_red=enable_red ) cmds += bwcmds # Delay/jitter/loss/max_queue_size using netem diff --git a/mininet/log.py b/mininet/log.py index 3aee5e2..cd00821 100644 --- a/mininet/log.py +++ b/mininet/log.py @@ -11,11 +11,11 @@ import types OUTPUT = 25 LEVELS = { 'debug': logging.DEBUG, - 'info': logging.INFO, - 'output': OUTPUT, - 'warning': logging.WARNING, - 'error': logging.ERROR, - 'critical': logging.CRITICAL } + 'info': logging.INFO, + 'output': OUTPUT, + 'warning': logging.WARNING, + 'error': logging.ERROR, + 'critical': logging.CRITICAL } # change this to logging.INFO to get printouts when running unit tests LOGLEVELDEFAULT = OUTPUT diff --git a/mininet/moduledeps.py b/mininet/moduledeps.py index 584d6c7..862c1f6 100644 --- a/mininet/moduledeps.py +++ b/mininet/moduledeps.py @@ -48,8 +48,8 @@ def moduleDeps( subtract=None, add=None ): modprobeOutput = modprobe( mod ) if modprobeOutput: error( 'Error inserting ' + mod + - ' - is it installed and available via modprobe?\n' + - 'Error was: "%s"\n' % modprobeOutput ) + ' - is it installed and available via modprobe?\n' + + 'Error was: "%s"\n' % modprobeOutput ) if mod not in lsmod(): error( 'Failed to insert ' + mod + ' - quitting.\n' ) exit( 1 ) @@ -63,6 +63,6 @@ def pathCheck( *args, **kwargs ): for arg in args: if not quietRun( 'which ' + arg ): error( 'Cannot find required executable %s.\n' % arg + - 'Please make sure that %s is installed ' % moduleName + - 'and available in your $PATH:\n(%s)\n' % environ[ 'PATH' ] ) + 'Please make sure that %s is installed ' % moduleName + + 'and available in your $PATH:\n(%s)\n' % environ[ 'PATH' ] ) exit( 1 ) diff --git a/mininet/net.py b/mininet/net.py index 9c39bb7..ccce862 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -107,11 +107,11 @@ class Mininet( object ): "Network emulation with hosts spawned in network namespaces." def __init__( self, topo=None, switch=OVSKernelSwitch, host=Host, - controller=Controller, link=Link, intf=Intf, - build=True, xterms=False, cleanup=False, ipBase='10.0.0.0/8', - inNamespace=False, - autoSetMacs=False, autoStaticArp=False, autoPinCpus=False, - listenPort=None ): + controller=Controller, link=Link, intf=Intf, + build=True, xterms=False, cleanup=False, ipBase='10.0.0.0/8', + inNamespace=False, + autoSetMacs=False, autoStaticArp=False, autoPinCpus=False, + listenPort=None ): """Create Mininet object. topo: Topo (topology) object or None switch: default Switch class @@ -307,7 +307,7 @@ class Mininet( object ): def configureControlNetwork( self ): "Control net config hook: override in subclass" raise Exception( 'configureControlNetwork: ' - 'should be overriden in subclass', self ) + 'should be overriden in subclass', self ) def build( self ): "Build mininet." @@ -519,7 +519,7 @@ class Mininet( object ): output('waiting for iperf to start up...') sleep(.5) cliout = client.cmd( iperfArgs + '-t 5 -c ' + server.IP() + ' ' + - bwArgs ) + bwArgs ) debug( 'Client output: %s\n' % cliout ) server.sendInt() servout += server.waitOutput() @@ -617,7 +617,7 @@ class MininetWithControlNet( Mininet ): # in the control network location. def configureRoutedControlNetwork( self, ip='192.168.123.1', - prefixLen=16 ): + prefixLen=16 ): """Configure a routed control network on controller and switches. For use with the user datapath only right now.""" controller = self.controllers[ 0 ] diff --git a/mininet/node.py b/mininet/node.py index bf5320c..a8b7e30 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -52,7 +52,7 @@ from subprocess import Popen, PIPE, STDOUT from mininet.log import info, error, warn, debug from mininet.util import ( quietRun, errRun, errFail, moveIntf, isShellBuiltin, - numCores, retry, mountCgroups ) + numCores, retry, mountCgroups ) from mininet.moduledeps import moduleDeps, pathCheck, OVS_KMOD, OF_KMOD, TUN from mininet.link import Link, Intf, TCIntf @@ -120,7 +120,7 @@ class Node( object ): # bash -m: enable job control cmd = [ 'mnexec', opts, 'bash', '-m' ] self.shell = Popen( cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT, - close_fds=True ) + close_fds=True ) self.stdin = self.shell.stdin self.stdout = self.shell.stdout self.pid = self.shell.pid @@ -355,7 +355,7 @@ class Node( object ): return self.intfs[ min( ports ) ] else: warn( '*** defaultIntf: warning:', self.name, - 'has no interfaces\n' ) + 'has no interfaces\n' ) def intf( self, intf='' ): """Return our interface object with given name, @@ -513,7 +513,7 @@ class Node( object ): def __repr__( self ): "More informative string representation" intfs = ( ','.join( [ '%s:%s' % ( i.name, i.IP() ) - for i in self.intfList() ] ) ) + for i in self.intfList() ] ) ) return '<%s %s: %s pid=%s> ' % ( self.__class__.__name__, self.name, intfs, self.pid ) @@ -775,7 +775,7 @@ class Switch( Node ): def __repr__( self ): "More informative string representation" intfs = ( ','.join( [ '%s:%s' % ( i.name, i.IP() ) - for i in self.intfList() ] ) ) + for i in self.intfList() ] ) ) return '<%s %s: %s pid=%s> ' % ( self.__class__.__name__, self.name, intfs, self.pid ) @@ -789,7 +789,8 @@ class UserSwitch( Switch ): name: name for the switch""" Switch.__init__( self, name, **kwargs ) pathCheck( 'ofdatapath', 'ofprotocol', - moduleName='the OpenFlow reference user switch (openflow.org)' ) + moduleName='the OpenFlow reference user switch' + + '(openflow.org)' ) if self.listenPort: self.opts += ' --listen=ptcp:%i ' % self.listenPort @@ -812,18 +813,18 @@ class UserSwitch( Switch ): controllers: list of controller objects""" # Add controllers clist = ','.join( [ 'tcp:%s:%d' % ( c.IP(), c.port ) - for c in controllers ] ) + for c in controllers ] ) ofdlog = '/tmp/' + self.name + '-ofd.log' ofplog = '/tmp/' + self.name + '-ofp.log' self.cmd( 'ifconfig lo up' ) intfs = [ str( i ) for i in self.intfList() if not i.IP() ] self.cmd( 'ofdatapath -i ' + ','.join( intfs ) + - ' punix:/tmp/' + self.name + ' -d ' + self.dpid + - ' 1> ' + ofdlog + ' 2> ' + ofdlog + ' &' ) + ' punix:/tmp/' + self.name + ' -d ' + self.dpid + + ' 1> ' + ofdlog + ' 2> ' + ofdlog + ' &' ) self.cmd( 'ofprotocol unix:/tmp/' + self.name + - ' ' + clist + - ' --fail=closed ' + self.opts + - ' 1> ' + ofplog + ' 2>' + ofplog + ' &' ) + ' ' + clist + + ' --fail=closed ' + self.opts + + ' 1> ' + ofplog + ' 2>' + ofplog + ' &' ) def stop( self ): "Stop OpenFlow reference user datapath." @@ -846,14 +847,14 @@ class OVSLegacyKernelSwitch( Switch ): self.intf = self.dp if self.inNamespace: error( "OVSKernelSwitch currently only works" - " in the root namespace.\n" ) + " in the root namespace.\n" ) exit( 1 ) @classmethod def setup( cls ): "Ensure any dependencies are loaded; if not, try to load them." pathCheck( 'ovs-dpctl', 'ovs-openflowd', - moduleName='Open vSwitch (openvswitch.org)') + moduleName='Open vSwitch (openvswitch.org)') moduleDeps( subtract=OF_KMOD, add=OVS_KMOD ) def start( self, controllers ): @@ -868,12 +869,12 @@ class OVSLegacyKernelSwitch( Switch ): self.cmd( 'ovs-dpctl', 'add-if', self.dp, ' '.join( intfs ) ) # Run protocol daemon clist = ','.join( [ 'tcp:%s:%d' % ( c.IP(), c.port ) - for c in controllers ] ) + for c in controllers ] ) self.cmd( 'ovs-openflowd ' + self.dp + - ' ' + clist + - ' --fail=secure ' + self.opts + - ' --datapath-id=' + self.dpid + - ' 1>' + ofplog + ' 2>' + ofplog + '&' ) + ' ' + clist + + ' --fail=secure ' + self.opts + + ' --datapath-id=' + self.dpid + + ' 1>' + ofplog + ' 2>' + ofplog + '&' ) self.execed = False def stop( self ): @@ -897,7 +898,7 @@ class OVSSwitch( Switch ): def setup( cls ): "Make sure Open vSwitch is installed and working" pathCheck( 'ovs-vsctl', - moduleName='Open vSwitch (openvswitch.org)') + moduleName='Open vSwitch (openvswitch.org)') # This should no longer be needed, and it breaks # with OVS 1.7 which has renamed the kernel module: # moduleDeps( subtract=OF_KMOD, add=OVS_KMOD ) @@ -970,15 +971,15 @@ class Controller( Node ): OpenFlow controller.""" def __init__( self, name, inNamespace=False, command='controller', - cargs='-v ptcp:%d', cdir=None, ip="127.0.0.1", - port=6633, **params ): + cargs='-v ptcp:%d', cdir=None, ip="127.0.0.1", + port=6633, **params ): self.command = command self.cargs = cargs self.cdir = cdir self.ip = ip self.port = port Node.__init__( self, name, inNamespace=inNamespace, - ip=ip, **params ) + ip=ip, **params ) self.cmd( 'ifconfig lo up' ) # Shouldn't be necessary self.checkListening() @@ -1002,7 +1003,7 @@ class Controller( Node ): if self.cdir is not None: self.cmd( 'cd ' + self.cdir ) self.cmd( self.command + ' ' + self.cargs % self.port + - ' 1>' + cout + ' 2>' + cout + '&' ) + ' 1>' + cout + ' 2>' + cout + '&' ) self.execed = False def stop( self ): @@ -1050,24 +1051,24 @@ class NOX( Controller ): noxCoreDir = os.environ[ 'NOX_CORE_DIR' ] Controller.__init__( self, name, - command=noxCoreDir + '/nox_core', - cargs='--libdir=/usr/local/lib -v -i ptcp:%s ' + - ' '.join( noxArgs ), - cdir=noxCoreDir, **kwargs ) + command=noxCoreDir + '/nox_core', + cargs='--libdir=/usr/local/lib -v -i ptcp:%s ' + + ' '.join( noxArgs ), + cdir=noxCoreDir, + **kwargs ) class RemoteController( Controller ): "Controller running outside of Mininet's control." def __init__( self, name, ip='127.0.0.1', - port=6633, **kwargs): + 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 ) + Controller.__init__( self, name, ip=ip, port=port, **kwargs ) def start( self ): "Overridden to do nothing." diff --git a/mininet/util.py b/mininet/util.py index 7e2df6a..1fd9cae 100644 --- a/mininet/util.py +++ b/mininet/util.py @@ -181,7 +181,7 @@ def moveIntfNoRetry( intf, node, printError=False ): if not ( ' %s:' % intf ) in links: if printError: error( '*** Error: moveIntf: ' + intf + - ' not successfully moved to ' + node.name + '\n' ) + ' not successfully moved to ' + node.name + '\n' ) return False return True @@ -431,7 +431,7 @@ def customConstructor( constructors, argStr ): if not constructor: raise Exception( "error: %s is unknown - please specify one of %s" % - ( cname, constructors.keys() ) ) + ( cname, constructors.keys() ) ) def customized( name, *args, **params ): "Customized constructor, useful for Node, Link, and other classes"