diff --git a/mininet/net.py b/mininet/net.py index 353fc579f04bc8bdaa86fa3ad4235e12fe6d97d4..b7b89f7e0e977ea1b4e9cb34c30e8ae00ca9deac 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -246,7 +246,7 @@ def addController( self, name='c0', controller=None, **params ): if not controller: controller = self.controller # Construct new controller if one is not given - if isinstance(name, Controller): + if issubclass( name.__class__, Controller ): controller_new = name # Pylint thinks controller is a str() # pylint: disable=E1103 @@ -357,7 +357,11 @@ def buildFromTopo( self, topo=None ): if type( classes ) is not list: classes = [ classes ] for i, cls in enumerate( classes ): - self.addController( 'c%d' % i, cls ) + # Allow Controller objects because nobody understands currying + if issubclass( cls.__class__, Controller ): + self.addController( cls ) + else: + self.addController( 'c%d' % i, cls ) info( '*** Adding hosts:\n' ) for hostName in topo.hosts():