From 496542121595b75786b3c76b6e6889d2fcabdc02 Mon Sep 17 00:00:00 2001 From: Bob Lantz Date: Thu, 4 Dec 2014 02:57:36 -0800 Subject: [PATCH] More pylint fixes... --- bin/mn | 35 +++++++++++++++++++++++------------ examples/linuxrouter.py | 2 +- examples/miniedit.py | 16 ++++++++++------ examples/vlanhost.py | 17 +++++++---------- 4 files changed, 41 insertions(+), 29 deletions(-) diff --git a/bin/mn b/bin/mn index 685b2a4..5b85ff3 100755 --- a/bin/mn +++ b/bin/mn @@ -25,7 +25,8 @@ from mininet.cli import CLI from mininet.log import lg, LEVELS, info, debug, warn, error from mininet.net import Mininet, MininetWithControlNet, VERSION from mininet.node import ( Host, CPULimitedHost, Controller, OVSController, - RYU, NOX, RemoteController, findController, DefaultController, + RYU, NOX, RemoteController, findController, + DefaultController, UserSwitch, OVSSwitch, OVSBridge, OVSLegacyKernelSwitch, IVSSwitch ) from mininet.nodelib import LinuxBridge @@ -132,7 +133,7 @@ class MininetRunner( object ): self.setup() self.begin() - def custom( self, option, opt_str, value, parser ): + def custom( self, _option, _opt_str, value, _parser ): """Parse custom file and add params. option: option e.g. --custom opt_str: option string e.g. --custom @@ -168,9 +169,12 @@ class MininetRunner( object ): # Add or modify global variable or class globals()[ name ] = value - def setNat( self, option, opt_str, value, parser ): + def setNat( self, _option, opt_str, value, parser ): + "Set NAT option(s)" + assert self # satisfy pylint parser.values.nat = True - if parser.rargs and parser.rargs[ 0 ][ 0 ] != '-': #first arg, first char != '-' + # first arg, first char != '-' + if parser.rargs and parser.rargs[ 0 ][ 0 ] != '-': value = parser.rargs.pop( 0 ) _, args, kwargs = splitArgs( opt_str + ',' + value ) parser.values.nat_args = args @@ -201,7 +205,8 @@ class MininetRunner( object ): default=False, help='clean and exit' ) opts.add_option( '--custom', action='callback', callback=self.custom, - type='string', help='read custom classes or params from .py file(s)' ) + type='string', + help='read custom classes or params from .py file(s)' ) opts.add_option( '--test', type='choice', choices=TESTS, default=TESTS[ 0 ], help='|'.join( TESTS ) ) @@ -231,10 +236,12 @@ class MininetRunner( object ): default=False, help="pin hosts to CPU cores " "(requires --host cfs or --host rt)" ) opts.add_option( '--nat', action='callback', callback=self.setNat, - help="adds a NAT to the topology that connects Mininet hosts" - " to the physical network." - " Warning: This may route any traffic on the machine that uses Mininet's" - " IP subnet into the Mininet network. If you need to change" + help="adds a NAT to the topology that" + " connects Mininet hosts to the physical network." + " Warning: This may route any traffic on the machine" + " that uses Mininet's" + " IP subnet into the Mininet network." + " If you need to change" " Mininet's IP subnet, see the --ipbase option." ) opts.add_option( '--version', action='callback', callback=version, help='prints the version and exits' ) @@ -265,6 +272,9 @@ class MininetRunner( object ): % self.options.verbosity ) lg.setLogLevel( self.options.verbosity ) + # Maybe we'll reorganize this someday... + # pylint: disable=too-many-branches,too-many-statements + def begin( self ): "Create and run mininet." @@ -279,15 +289,16 @@ class MininetRunner( object ): CONTROLLERS[ 'default' ] = findController() if CONTROLLERS[ 'default' ] is None: if self.options.switch == 'default': - # Fall back to OVS Bridge, which does not use an OF controller - info( '*** No default OpenFlow controller found for default switch!\n' ) + info( '*** No default OpenFlow controller found ' + 'for default switch!\n' ) info( '*** Falling back to OVS Bridge\n' ) self.options.switch = 'ovsbr' self.options.controller = 'none' elif self.options.switch in ( 'ovsbr', 'lxbr' ): self.options.controller = 'none' else: - raise Exception( "Could not find a default controller for switch %s" % + raise Exception( "Could not find a default controller " + "for switch %s" % self.options.switch ) topo = buildTopo( TOPOS, self.options.topo ) diff --git a/examples/linuxrouter.py b/examples/linuxrouter.py index 3fc5e68..a2d1442 100755 --- a/examples/linuxrouter.py +++ b/examples/linuxrouter.py @@ -44,7 +44,7 @@ class LinuxRouter( Node ): class NetworkTopo( Topo ): "A simple topology of a router with three subnets (one host in each)." - def build( self, **opts ): + def build( self, **_opts ): router = self.addNode( 'r0', cls=LinuxRouter, ip='192.168.1.1/24' ) h1 = self.addHost( 'h1', ip='192.168.1.100/24', defaultRoute='via 192.168.1.1' ) diff --git a/examples/miniedit.py b/examples/miniedit.py index be2bce9..0203a26 100755 --- a/examples/miniedit.py +++ b/examples/miniedit.py @@ -13,8 +13,10 @@ Controller icon from http://semlabs.co.uk/ OpenFlow icon from https://www.opennetworking.org/ """ -# For now, tolerate long lines and long module -# pylint: disable=line-too-long,too-many-lines +# Miniedit needs some work in order to pass pylint... +# pylint: disable=line-too-long,too-many-lines,too-many-branches +# pylint: disable=too-many-statements,attribute-defined-outside-init +# pylint: disable=missing-docstring MINIEDIT_VERSION = '2.2.0.1' @@ -1573,7 +1575,7 @@ class MiniEdit( Frame ): self.createDataLinkBindings() self.link = self.linkWidget = None - f.close + f.close() def findWidgetByName( self, name ): for widget in self.widgetToItem: @@ -2624,8 +2626,10 @@ class MiniEdit( Frame ): # Ultimately we will either want to use a topo or # mininet object here, probably. - def addLink( self, source, dest, linktype='data', linkopts={} ): + def addLink( self, source, dest, linktype='data', linkopts=None ): "Add link to model." + if linkopts is None: + linkopts = {} source.links[ dest ] = self.link dest.links[ source ] = self.link self.links[ self.link ] = {'type' :linktype, @@ -3142,7 +3146,7 @@ class MiniEdit( Frame ): return self.net.nameToNode[ name ].cmd( 'iperf -s -p 5001 &' ) - """ BELOW HERE IS THE TOPOLOGY IMPORT CODE """ + ### BELOW HERE IS THE TOPOLOGY IMPORT CODE ### def parseArgs( self ): """Parse command-line args and return options object. @@ -3562,7 +3566,7 @@ def addDictOption( opts, choicesDict, default, name, helpStr=None ): if __name__ == '__main__': setLogLevel( 'info' ) app = MiniEdit() - """ import topology if specified """ + ### import topology if specified ### app.parseArgs() app.importTopo() diff --git a/examples/vlanhost.py b/examples/vlanhost.py index 11d3831..f84661c 100755 --- a/examples/vlanhost.py +++ b/examples/vlanhost.py @@ -30,8 +30,9 @@ from mininet.util import quietRun from mininet.log import error class VLANHost( Host ): + "Host connected to VLAN interface" - def config( self, vlan=100, **params ): + def config( self, vlan=100, **params ): """Configure VLANHost according to (optional) parameters: vlan: VLAN ID for default interface""" @@ -90,7 +91,7 @@ class VLANStarTopo( Topo ): self.addLink( h, s1 ) -def exampleCustomTags( vlan ): +def exampleCustomTags(): """Simple example that exercises VLANStarTopo""" net = Mininet( topo=VLANStarTopo() ) @@ -110,16 +111,12 @@ if __name__ == '__main__': setLogLevel( 'info' ) if not quietRun( 'which vconfig' ): - error( "Cannot find command 'vconfig'\nThe packge", + error( "Cannot find command 'vconfig'\nThe package", "'vlan' is required in Ubuntu or Debian,", "or 'vconfig' in Fedora\n" ) exit() - try: - vlan = int( sys.argv[ 1 ] ) - except Exception: - vlan = None - if vlan: - exampleAllHosts( vlan ) + if len( sys.argv ) >= 2: + exampleAllHosts( vlan=int( sys.argv[ 1 ] ) ) else: - exampleCustomTags( vlan ) + exampleCustomTags()